2009-10-02 41 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