2009-10-02 58 views
4

是否有任何有價值的Ruby方法來計算浮點數位數?另外,如何指定精確的to_s浮點數?Ruby:計數浮點數中的數字

+5

請記住,浮點數的十進制表示中的全部數字不一定是有用的數字。例如,0.1不能用二進制精確表示,所以你可能不會特別高興地發現0.1有18個數字而沒有舍入。 – Chuck 2009-10-02 21:11:38

回答

6
# Number of digits 

12345.23.to_s.split("").size -1 #=> 7 

# The precious part 

("." + 12345.23.to_s.split(".")[1]).to_f #=> .023 

# I would rather used 
# 12345.23 - 12345.23.to_i 
# but this gives 0.22999999999563 
+0

謝謝,khell! – gmile 2009-10-02 21:53:50

+4

您對數位計數的解決方案沒有考慮負數上的''''。另外,你爲什麼要做'to_s.split(「」)。size而不是'to_s.size'呢? – Pesto 2009-10-03 12:48:40

0

我想你應該檢查number_with_precision幫手。

number_with_precision(13, :precision => 5) # => 13.00000 
+0

我正在尋找Ruby解決方案,而不是Rails – gmile 2009-10-02 20:38:45

+0

對不起,錯過了。 – 2009-10-02 21:37:44

1

指定在紅寶石浮子的精確度。你可以使用圓形方法。

number.round(2) 

2是精度。

53.819.round(2) -> 53.82