十进制值不正确

时间:2018-05-10 13:22:44

标签: c# mysql

当我在DECIMAL(4,3)列中插入一些数据时遇到了一种奇怪的情况,特别是我试图插入的值是:80.018但我得到:{ {1}}执行此代码后:

9.999

为什么会出现这种情况?

3 个答案:

答案 0 :(得分:8)

decimal(4,3)表示总共有4位数,其中3位是小数点。 如果值仅限于99.999,那么decimal(5,3)就可以了。

答案 1 :(得分:3)

小数(4,3)表示总共有4位数,小数点后3位。 80.018要求(5,3)

答案 2 :(得分:1)

对于超出范围和溢出条件,MySQL存储列中允许的最高值(或允许的最低值,如果我们变为负值)除非启用严格模式,否则MySQL将抛出错误。

此行为记录在MySQL参考手册中:https://dev.mysql.com/doc/refman/5.7/en/out-of-range-and-overflow.html

  

当MySQL将值存储在超出列数据类型允许范围的数值列中时,结果取决于当时生效的SQL模式:

     
      
  • 如果启用了严格的SQL模式,MySQL会根据SQL标准拒绝带有错误的超出范围的值,并且插入失败。

  •   
  • 如果未启用限制模式,MySQL会将值剪辑到列数据类型范围的相应端点,并存储结果值。

  •