1

将奇数除以 2 时看到错误会比错误的计算更好吗?

Ruby 中的示例(我猜它在其他语言中也一样,因为 int 和 float 是常见的数据类型):

39 / 2 => 19

我知道输出不是 19.5,因为我们要求的是整数除以整数的值,而不是浮点数(39.0)除以整数。我的问题是,如果这些数据类型的限制阻止它计算正确的值,为什么要输出最不正确的值?

  • 正确 = 19.5
  • 正确的 = 20(四舍五入)
  • 最不正确 = 19
4

3 回答 3

6

看到错误不是更好吗?

抛出错误通常会适得其反,并且在大多数语言中计算效率低下。

并认为这通常是有用的行为:

total_minutes = 563;
hours   = total_minutes / 60;
minutes = total_minutes % 60;

  • 正确 = 19.5
  • 正确的 = 20(四舍五入)
  • 最不正确 = 19

谁说 20 比 19 更正确?

于 2012-05-28T19:57:09.137 回答
3

除其他原因之外,在除法和取模的兄弟运算符之间保持以下非常有用的关系。

商:a / b = Q

余:a % b = R

奇妙的关系:a = b*Q + R

同样,整数除以二返回与右移一位和许多其他良好关系相同的结果。

但秘密,主要原因是 C 是这样做的,你根本不和 C 争论!

于 2012-05-28T20:01:01.893 回答
1

如果除以 2.0,则在 Ruby 中得到正确的结果。

39 / 2.0 => 19.5
于 2013-01-28T10:51:57.050 回答