2009-10-02 2 views
4

Есть ли какой-нибудь достойный метод Ruby для подсчета количества цифр в поплавке? Кроме того, как указать точное значение to_s float numbers?Ruby: подсчет цифр в номере с плавающей запятой

+5

Имейте в виду, что полное число цифр в десятичном представлении с плавающей точкой необязательно является полезным числом. Например, 0,1 не может быть точно представлен в двоичном формате, поэтому вам может быть не очень приятно обнаружить, что 0,1 имеет 18 цифр без округления. – Chuck

ответ

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

+4

Ваше решение для подсчета цифр не учитывает '' -'' на отрицательных числах. Кроме того, что вы думаете о том, что вы делаете 'to_s.split (" "). Size' вместо того, чтобы просто делать' to_s.size'? – Pesto

0

Я думаю, вы должны проверить вспомогательный помощник number_with_precision.

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

Я ищу решение Ruby, а не Rails – gmile

+0

Простите, пропустил это. –

1

указать точность поплавка в Ruby. вы можете использовать круглый метод.

number.round(2) 

2 - это точность.

53.819.round(2) -> 53.82 
Смежные вопросы