2013-03-20 44 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方法