十进制轮错误计算

时间:2016-06-22 22:39:40

标签: mysql floating-point decimal

我有以下数字的示例,这些数字以十进制(10,2)格式存储在mysql数据库中

1499.3927125506 - 1499.39 -> this is how it saved into the database
384.41295546559 - 384.41
278.74493927126 - 278.74
537.44939271255 - 537.45

保存到数据库之前的实际总数是1700,但是在保存之后总数变为1699.99

如何使总计1700不是1699.99?

2 个答案:

答案 0 :(得分:0)

如果您想避免舍入错误,则需要更改MySQL datatype以匹配数据的精度。在您提供的数据中,您需要14的精度(总位数),其中刻度(十进制后的数字)为10,DECIMAL(14,10)与1700完全相加。

答案 1 :(得分:0)

使用这样的数字,您应该使用DOUBLE,而不是DECIMAL(.., ..)

使用DOUBLE(.., ..);这只会增加您的问题。)