将奇数除以 2 时看到错误会比错误的计算更好吗?
Ruby 中的示例(我猜它在其他语言中也一样,因为 int 和 float 是常见的数据类型):
39 / 2 => 19
我知道输出不是 19.5,因为我们要求的是整数除以整数的值,而不是浮点数(39.0)除以整数。我的问题是,如果这些数据类型的限制阻止它计算正确的值,为什么要输出最不正确的值?
- 正确 = 19.5
- 正确的 = 20(四舍五入)
- 最不正确 = 19
看到错误不是更好吗?
抛出错误通常会适得其反,并且在大多数语言中计算效率低下。
并认为这通常是有用的行为:
total_minutes = 563;
hours = total_minutes / 60;
minutes = total_minutes % 60;
- 正确 = 19.5
- 正确的 = 20(四舍五入)
- 最不正确 = 19
谁说 20 比 19 更正确?
除其他原因之外,在除法和取模的兄弟运算符之间保持以下非常有用的关系。
商:a / b = Q
余:a % b = R
奇妙的关系:a = b*Q + R
。
同样,整数除以二返回与右移一位和许多其他良好关系相同的结果。
但秘密,主要原因是 C 是这样做的,你根本不和 C 争论!
如果除以 2.0,则在 Ruby 中得到正确的结果。
39 / 2.0 => 19.5