【问题标题】:Rounded values do not sum up to their non-rounded counterparts [duplicate]四舍五入的值不能与非四舍五入的对应值相加[重复]
【发布时间】:2016-07-24 17:58:50
【问题描述】:

假设我有一些值(代表某个总金额的份额)的总和正好为 100,例如:

13.44500
35.35500
40.39877
10.80123

如果我将它们四舍五入到小数点后两位,我会得到以下值,这些值不再总和为 100,而是总和为 100.01

13.45
35.36
40.40
10.80

我知道四舍五入会丢弃信息,但我一直认为,既然我们以相同的方式丢弃每个数字的信息,总和不应该改变。因此我的问题是:

  • 四舍五入的数学属性是什么?
  • 为什么四舍五入的值总和与原始值不同?
  • 当我只能显示数值和总和的两位小数时,向用户显示这些值和总和的最佳做法是什么?由于基础数据总和为 100,我不想显示总和不同的值。

【问题讨论】:

  • 很多很多图表都有一个脚注“由于四舍五入,数值可能不会增加到 100%。”大多数时候,甚至没有人会注意到非 100%(如果发生的话)。您的示例之所以引人注目,是因为您只有两个非零最低有效数字。
  • 感谢您提供这些问题的链接,我没有注意到它们!

标签: math number-formatting rounding-error rounding


【解决方案1】:

这个问题来自于 1/2 或 0.5 向上取整的事实。

从所有四舍五入的数字中“以相同的方式丢失数据”并不意味着对数字的数学运算将不受影响。

看到了

1.005 + 1.005 = 2.01

但是它们每个都向上取整到1.01(如果我们四舍五入到小数点后两位)所以,如果我们在添加之前四舍五入,我们自然会得到:

1.01 + 1.01 = 2.02

【讨论】:

  • 你对我的第三个问题有什么建议吗?
  • 无偏舍入规则也会发生这种情况(例如舍入到偶数)
  • 最佳实践是主观的,但根据所代表的数据,我会说 1. 向用户显示完整的精度,或者 2. 接受四舍五入的数字的总和与确切的总和不匹配.
  • 这不仅仅是 0.5 的四舍五入。完全是圆的。比如三份 1/3=.3333...
  • 是的。我的意思是 OP 的问题是由于两个 0.005 值四舍五入而特别发生的。除了错误的假设,即舍入所有涉及的值不会影响对它们的数学运算
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-02
  • 1970-01-01
  • 1970-01-01
  • 2023-01-12
  • 1970-01-01
  • 2022-01-23
  • 2012-08-04
相关资源
最近更新 更多