什么是奇数整数后面的推理在除以2时四舍五入?

时间:2012-05-28 19:54:23

标签: ruby math integer

将奇数除以2而不是错误的计算时,看到错误不是更好吗?

Ruby中的示例(我在其他语言中猜测它是相同的,因为整数和浮点数是常见的数据类型):

39 / 2 => 19

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

  • 正确= 19.5
  • Correct-ish = 20(向上舍入)
  • 最少纠正= 19

3 个答案:

答案 0 :(得分:6)

  

看错会不是更好吗?

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

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

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

  
      
  • 正确= 19.5
  •   
  • Correct-ish = 20(向上舍入)
  •   
  • 最少纠正= 19
  •   

谁说20比19更正确?

答案 1 :(得分:3)

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

商数:a / b = Q

剩余:a % b = R

令人敬畏的关系:a = b*Q + R

同样,整数除以2会返回与右移相同的结果以及许多其他良好的关系。

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

答案 2 :(得分:1)

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

39 / 2.0 => 19.5