在Ruby中,如何将数字四舍五入为2个有效数字

问题描述 投票:3回答:4

例如,

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

ruby rounding
4个回答
3
投票

这里是一种幼稚算法:

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

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包含结果

这里是该程序的在线测试:http://ideone.com/trSNOr


0
投票

另一种方式:

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

将输出字符串:

=> "24000000"

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


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
© www.soinside.com 2019 - 2024. All rights reserved.