【问题标题】:Ruby 2.0 - Rounding an integer to the nearest multiple of 10Ruby 2.0 - 将整数舍入到最接近 10 的倍数
【发布时间】:2013-12-14 14:47:55
【问题描述】:

如何将整数四舍五入到最接近的十的倍数?

我试过integer.round(0.1),但它给出了最接近的十进制数。

示例:3 应返回 0,55 应返回 60。

有没有一种方法可以四舍五入到最接近的 10 的倍数?

【问题讨论】:

  • 10*((x+5)/10) 适用于非负整数。

标签: ruby rounding


【解决方案1】:

Integer#round 有这个功能。

您将一个负数传递给round 以表示您想要四舍五入到哪个10 位。例如:

四舍五入到最接近的 10:

55.round(-1) # => 60

四舍五入到最接近的 100:

550.round(-2) # => 600

【讨论】:

  • 这将四舍五入到一个有效数字,而不一定是“十”精度。
  • 哦...所以我将数字设为。谢谢!
  • @AaronCronin 我没听懂你.. :(
  • 没关系,我不正确,这很好用!我误读了文档:)
  • 不,抱歉。我只使用 Vim 进行编码。
【解决方案2】:

你可以只除以 10,四舍五入,然后乘以 10:

nearest = (x/ 10).round * 10

【讨论】:

  • (15/10).round * 10 返回 10 但应该返回 20
  • 那只是因为整数除法会截断小数,如果你除以10.0,它会四舍五入到20。
  • 如果你无论如何都想四舍五入(这是我的要求),你可以这样做 (x / 10.0).floor * 10
  • @sixty4bit 那为什么不x / 10 * 10呢?
  • @x-yuri x / 10 * 10 总是返回 x
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-07
  • 2011-03-25
  • 2011-03-16
相关资源
最近更新 更多