小数点四舍五入错误计算

decimal round wrong calculation

我有以下示例数字,这些数字以十进制 (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?

如果您想避免舍入错误,您需要更改 MySQL datatype 以匹配数据的精度。在您提供的数据中,您将需要 14 的精度(总位数)和 10 的比例(小数点后的位数)这将是 DECIMAL(14,10) 以完美地求和到 1700。

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

不要使用DOUBLE(.., ..);那只会增加你的问题。)