【问题标题】:Why does Ruby division round down? [duplicate]为什么Ruby除法四舍五入? [复制]
【发布时间】:2020-03-25 22:08:08
【问题描述】:

我刚开始学习 Ruby,发现它计算出 11 / 3.0 为 3.6666666666666665。

为什么不像大多数计算器/数学惯例那样四舍五入到“...67”?

编辑:人们关闭这个问题的事实是否意味着问题的答案是由于浮点运算?我想知道是否是这种情况,或者是否有关于 Ruby 如何计算数字的具体决定。

【问题讨论】:

  • 我猜……可能吗?虽然我仍然想知道为什么,如果计算器是一台计算机并且它可以给出正确的答案,为什么不按照相同的标准构建编程语言?
  • 我还听到有人说,“Ruby Divisions downs”,所以这听起来像是在制作语言时有意识的编程决定,所以我想知道为什么
  • @user53: 计算器确实有同样的限制,如果它们使用相同的浮点实现,大多数都这样做。
  • “人们关闭这个问题是否意味着问题的答案是由于浮点运算?”是的。使用 IEEE 浮点数(绝大多数)的所有其他语言都表现出完全相同的行为。示例:GoJavaScript

标签: ruby math rounding division calculation


【解决方案1】:

它适合那些想要非常精确的人。

你可以使用

(11/3.0).round(2)

它给了你要求的 3.67

Apidock link for round

【讨论】:

  • 有趣;谢谢你!虽然我想知道为什么它选择最后一个数字,在所有这些 6 的末尾,是 5 而不是 7。似乎 7 比 5 更接近。
猜你喜欢
  • 1970-01-01
  • 2017-12-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多