【问题标题】:decimal round wrong calculation小数四舍五入错误计算
【发布时间】:2016-06-22 22:39:40
【问题描述】:

我有以下数字示例,它们以十进制(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 floating-point decimal


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2014-10-29
      • 1970-01-01
      • 1970-01-01
      • 2022-01-09
      • 1970-01-01
      • 1970-01-01
      • 2015-07-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多