3

例如,

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

4

4 回答 4

3

这是一种天真的算法:

n = 24987654
n / (10 ** (n.to_s.size - 2)) * (10 ** (n.to_s.size - 2)
=> 24000000
于 2013-03-20T22:02:05.170 回答
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

于 2013-03-20T22:21:24.197 回答
1
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
于 2019-11-05T01:03:31.280 回答
0

只是另一种方式:

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

将输出字符串:

=> "24000000"

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

于 2013-03-21T00:16:28.107 回答