在Ruby中,如何将数字向下舍入到2位有效数字

时间:2013-03-20 21:56:39

标签: ruby rounding

例如,

如果我有24987654,我需要它返回24000000,这可能吗?

4 个答案:

答案 0 :(得分:3)

这是一个天真的算法:

n = 24987654
n / (10 ** (n.to_s.size - 2)) * (10 ** (n.to_s.size - 2)
=> 24000000

答案 1 :(得分:1)

这是另一种方法:

x -= x % (10 ** (Math.log(x, 10).to_i - 1))

在上面的陈述中:

  1. Math.log(x, 10).to_i - 1确定要删除的无效数字的数量
  2. x % (10 ** number_of_insignificant_digits)计算数字中无关紧要的部分
  3. 从初始数字中减去第2步中的值,现在x包含结果
  4. 以下是该计划的在线测试:http://ideone.com/trSNOr

答案 2 :(得分:0)

另一种方式:

n = 24987654
a = n.to_s[0, 2] + '0' * ((a.to_s.length)-2)

将输出字符串:

=> "24000000"

您可以将其转换为调用.to_i方法

的整数

答案 3 :(得分:0)

n = 24987654
n.round((n.to_s.size - 2)*-1) #=> 25000000
n.ceil((n.to_s.size - 2)*-1) #=> 25000000
n.floor((n.to_s.size - 2)*-1) #=> 24000000

n = 24187654
n.round((n.to_s.size - 2)*-1) #=> 24000000
n.ceil((n.to_s.size - 2)*-1) #=> 25000000
n.floor((n.to_s.size - 2)*-1) #=> 24000000