当前位置: 代码迷 >> 综合 >> decimal float
  详细解决方案

decimal float

热度:67   发布时间:2023-12-21 23:31:45.0

在MySQL中我们经常会用到一些高精度和长度的数据类型,例如对于金额的时候,一般会选择 decimal 或者 numeric 类型。

当然在遇到金额计量的时候也尝试过 float 类型,float(M,D)后来,在精度精确到小数点8为的时候,保存的同时就发现了问题,最后一位会四舍五入,而不是自己手动输入的值。后来查阅了相关资料才找到原因:

区别:
在MySQL中,loat,double 等非标准类型,在DB中保存的是近似值
而 Decimal 则以字符串的形式保存数值。

解释:
float,double 类型是可以存浮点数(即小数类型)。
浮点数如果不写经度和标度,会按照实际精度值保存,如果有精度和标度,则会自动将四舍五入后的结果插入,系统不会报错。

float 和 decimal 间区别:

  • 当你给定的数据是整数的时候,那么它就以整数给你处理。
  • default 值为:0.00而实际存储是0,同样我存取货币为15.00,实际存储是15。
  • float 占4个字节,double 占8个字节,decimail(M,D) 占M+2个字节

此时因为他们容易产生误差,我们可以选择使用 numericdecimal 同义,numeric 将自动转成 decimal。

所以建议大家在遇到类似于货币类型计算的时候,选择 decimail 准没错。

  相关解决方案