对于游戏币等代币,一般存储为int类型是可行的。问题在于越界,int类型长度为11位。
在存储人民币相关的金额的时候,则只能存储到9长度的人民币,也就是说,最大只能存储999999999,不到10亿的数值,如果业务增长很快的话,就会给自己留下隐患。
Decimal:Decimal为专门为财务相关问题设计的数据类型。
DECIMAL从MySQL 51引入,列的声明语法是DECIMAL(M,D)。在MySQL 51中,参量的取值范围如下:M是数字的最大数(精度)。其范围为1~65(在较旧的MySQL版本中,允许的范围是1~254),M 的默认 值是10。
D是小数点右侧数字的数目(标度)。其范围是0~30,但不得超过M。说明:float占4个字节,double占8个字节,decimail(M,D)占M+2个字节。
如DECIMAL(5,2) 的最大值为9 9 9 9 9 9,因为有7 个字节可用。能够解决数据的范围和精度的问题。
扩展资料
MySQL数据类型DECIMAL用法:
MySQL DECIMAL数据类型用于在数据库中存储精确的数值。我们经常将DECIMAL数据类型用于保留准确精确度的列,例如会计系统中的货币数据。
要定义数据类型为DECIMAL的列,请使用以下语法:column_name DECIMAL(P,D);
在上面的语法中:
P是表示有效数字数的精度。 P范围为1〜65。
D是表示小数点后的位数。 D的范围是0~30。MySQL要求D小于或等于(<=)P。
DECIMAL(P,D)表示列可以存储D位小数的P位数。十进制列的实际范围取决于精度和刻度。
与INT数据类型一样,DECIMAL类型也具有UNSIGNED和ZEROFILL属性。 如果使用UNSIGNED属性,则DECIMAL UNSIGNED的列将不接受负值。
如果使用ZEROFILL,MySQL将把显示值填充到0以显示由列定义指定的宽度。 另外,如果我们对DECIMAL列使用ZERO FILL,MySQL将自动将UNSIGNED属性添加到列。
decimal(10,2)中的“2”表示小数部分的位数,如果插入的值未指定小数部分或者小数部分不足两位则会自动补到2位小数,若插入的值小数部分超过了2为则会发生截断,截取前2位小数。
“10”指的是整数部分加小数部分的总长度,也即插入的数字整数部分不能超过“10-2”位,否则不能成功插入,会报超出范围的错误。
下面是decimal对应表,可以用来进行对照:
扩展资料:
Decimal为SQL Server、MySql等数据库的一种数据类型,不属于浮点数类型,可以在定义时划定整数部分以及小数部分的位数。使用精确小数类型不仅能够保证数据计算更为精确,还可以节省储存空间,例如百分比使用decimal(4,2)即可。
参考资料:
一般用money或decimal或numeric,而不用float或double,因为容易出现"失真"
money货币数据存储的精确度为四位小数。可以存储在 money 数据类型中的值的范围是 -922,337,203,685,4775808 至 +922,337,203,685,4775807(需 8 个字节的存储空间)。
在 SQL Server中,numeric 数据类型等价于 decimal 数据类型。存储 decimal 或 numeric 数值所需的字节数取决于该数据的数字总数和小数点右边的小数位数。
在C语言中编写如下程序:
1、decimal d = 0234M;
2、 保留小数后两位(注释)
3、d=MathRound(d,2);
最终结果为:d=023,即为保留两位小数。
Decimal为SQL Server、MySql等数据库的一种数据类型,不属于浮点数类型,可以在定义时划定整数部分以及小数部分的位数。
使用精确小数类型不仅能够保证数据计算更为精确,还可以节省储存空间。
扩展资料:
Decimal数据类型的位数:
p(有效位数)
可储存的最大十进位数总数,小数点左右两侧都包括在内。有效位数必须是1至最大有效位数38之间的值。预设有效位数是18。
s(小数位数)
小数点右侧所能储存的最大十进位数。小数位数必须是从0到p的值。只有在指定了有效位数时,才能指定小数位数。预设小数位数是 0;因此0≤s≤p。最大储存体大小会随著有效位数而不同。
Decimal(n,m)表示数值中共有n位数,其中整数n-m位,小数m位。例:decimal(10,6),数值中共有10位数,其中整数占4位,小数占6位。
例:decimal(2,1),此时,插入数据“123”、“12”等会出现“数据溢出错误”的异常;插入“123”或“12345”会自动四舍五入成“12”;插入“2”会自动补成“20”,以确保2位的有效长度,其中包含1位小数。
当用int类型会有溢出时,可以用decimal类型进行处理,结果可以用convert或cast进行转换。
参考资料来源:百度百科-Decimal
1、sql语句 decimal(18,0)的意思是:可储存的最大十进位数总数为18,小数位数为0。
2、Decimal(n,m)的含义如下:
n表示可储存的最大十进位数总数,小数点左右两侧都包括在内,最小的有效位数是 1 ,最大的有效位数是 38 。
m表示小数点右侧所能储存的最大十进位数。m和n之间要满足0≤m≤n的关系,只有在指定了有效位数时,才能指定小数位数。
Decimal为SQL Server、MySql等数据库的一种数据类型,不属于浮点数类型,可以在定义时划定整数部分以及小数部分的位数。
Decimal(n,m)表示数值中共有n位数,其中整数(n-m)位,小数m位。例:decimal(10,6),数值中共有10位数,其中整数占4位,小数占6位。
以上就是关于mysql 存储金额类型,用什么数据类型比较可靠,一般企业数据用什么数据类型全部的内容,包括:mysql 存储金额类型,用什么数据类型比较可靠,一般企业数据用什么数据类型、decimal(10,2) 是什么意思 在一个表中、【SQL】金额如果存在数据库中应该使用何种类型等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)