
decimal是MySQL中存在的精准数据类型。MySQL中的数据类型有:float,double等非精准数据类型和decimal这种精准。区别:float,double等非精准类型,在DB中保存的是近似值。Decimal则以字符串的形式保存精确的原始数值。
扩展资料
对SQL Server而言,decimal和numeric视为相同的类型,它们可用来保存具有小数点而且数值确定的数值。它们不像float和real是用来保存近似值。此类型的列其声明方式为decima[(p[,s])]或numericl[(p[,s])]。其中p是此数值全部的位数,含小数部分但不包括小数点,s则是小数的位数。
p值称为此数值的精确度,例如:decimal(10,3)表示共有7位整数3位小数,此例的精确度为10位。此类型的列可保存的值范围为1038-1到-1038-1之间。其占用存储空间依精确度不同而不同,下表给出Decimal类型变量精确度和占用空间的关系。
直接给个例子。decimal(5,2) 其中 5为最多可以存储的十进制位数为5位,是小数点前后的位数总和。2表示小数点后面的位数。同理decimal(10,2)表示十进制为10为,小数点为2,例如11111111.36
,100.20是合法的值,而1234.56,总数为6位,为非法的数据值。有人说那存12345应该可以吧。事实证明是不行的。因为其精度是2,所以12345会被当做12345.00来处理,还是 非法的数据。 那么存储100.11111111111111呢?经测试,数据是可以存储的,但是会丢失精度(四舍五入),数据100.11会存储到数据库。
numeric和decimal同理。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)