lib/rounding.rb
class Numeric
# round a given number to the nearest step
def round_by(increment)
(self / increment).round * increment
end
end
字符串 和spec:
require 'rounding'
describe 'nearest increment by 0.5' do
{0=>0.0,0.5=>0.5,0.60=>0.5,0.75=>1.0, 1.0=>1.0, 1.25=>1.5, 1.5=>1.5}.each_pair do |val, rounded_val|
it "#{val}.round_by(0.5) ==#{rounded_val}" do val.round_by(0.5).should == rounded_val end
end
end
9条答案
按热度按时间zf2sa74q1#
字符串
ao218c7q2#
看看这个链接,我想这就是你需要的。Ruby rounding
字符串
n1bvdmb63#
通常,用于“舍入到最接近的 x”的算法是:
字符串
有时候最好乘以
1 / precision
,因为它是一个整数(因此它的工作速度更快):型
在您的情况下,这将是:
型
其将评估为:
型
我不知道任何Python,虽然,所以语法可能不正确,但我相信你可以弄清楚。
xsuvu9jc4#
要四舍五入到最接近的2位,请改为:
字符串
vwkv1x7d5#
下面是一个通用函数,它可以舍入任何给定的步长值:
在lib中放置:
字符串
和spec:
型
使用方法:
型
hth.
72qzrwbm6#
Ruby 2现在有了一个round函数:
字符串
在ruby
2.4
中也有一些选项,比如::even
、:up
和:down
等;型
guicsvcw7#
可以使用
String
类的%
方法对数字进行舍入。比如说
字符串
将给予
"5.56"
作为结果(一个字符串)。4sup72z88#
若要获得不含小数的舍入结果,请使用Float的.round
字符串
pvabu6sv9#
我知道这个问题很老了,但我喜欢与世界分享我的发明,以帮助他人:这是一种浮点数的步进舍入方法,将小数舍入到最接近的给定数;它对于舍入产品价格非常有用,例如:
字符串