【发布时间】:2013-01-28 18:51:57
【问题描述】:
奇数除以 2 时出现错误不是比计算错误更好吗?
Ruby 中的示例(我猜它在其他语言中也是如此,因为 int 和 float 是常见的数据类型):
39 / 2 => 19
我知道输出不是 19.5,因为我们要求的是整数除以整数的值,而不是浮点数 (39.0) 除以整数。我的问题是,如果这些数据类型的限制阻止它计算正确的值,为什么要输出最不正确的值?
- 正确 = 19.5
- Correct-ish = 20(向上取整)
- 最不正确 = 19
【问题讨论】:
-
为什么 20 更正确?
-
舍入并不简单 - 舍入值有许多不同的规则,而且没有一个规则可以满足所有人。如果这个程序实际上是在计算要加工的材料长度怎么办?最好是短半英寸,而不是长半英寸并堵塞机器。
-
好问题。我猜 20 更正确更多是一种社会建构而非数学原因,因为从 19.5 到 19 和 20 的距离是相等的。无论好坏,从 0.5 开始向上取整是一个共识。
-
这有一个很好的数学原因。它告诉
2s 总共有多少39。 -
@WojtekT 谢谢。当这样表达时,19 确实比 20 更正确。