2013-03-20 40 views

回答

3

这是一个天真的算法:

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

我得到结果'24987600':http://ideone.com/SIikX3 – GolfWolf 2013-03-20 22:08:01

+0

你可能是指'n.to_s.size'而不是'n.size' – GolfWolf 2013-03-20 22:09:52

+0

我使用MRI 2.0.0,让我检查一下1.9.3 – Intrepidd 2013-03-20 22:11:14

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方法