1

我使用 av 简单数据库,我有 3 列 A(bigINT 20) 、 B(bigInt 20) 和 c(DECIMAL(5,4)) ,当我触发以下查询时,我得到下面提到的结果:

REPLACE INTO `my_table` SET `A` = 8,`B` = 44,`C` = 14;

我在 mysql A =8 , b= 44 和 c 中得到这些值 9.9999 !?

关于为什么会发生这种情况以及我能做些什么来解决这个问题的任何想法?

4

1 回答 1

5

DECIMAL(5,4)表示该数字最多有5数字,4其中小数点后。所以14只是溢出,因为它需要DECIMAL(6,4)

必须清除14溢出,因为作为常数精度点小数,它在内部14.0000(所以六位数超过五位)。

因此,如果您尝试将14.0000(六位数)放入DECIMAL(5,4)(最多五位数)-> MySQL 选择最接近您请求的值。因此14.0000被“四舍五入”到9.9999

为了适合14您的列,您可以扩展它DECIMAL(6,4)(通常允许更多位数)或更改为DECIMAL(5,3)(这将允许小数点前多一位,但当然会失去一些精度)。

于 2012-08-20T12:35:11.897 回答