JRuby 1.6.x. Jak zaokrąglić pływak do miejsc dziesiętnych w jrubach.
number = 1.1164
number.round(2)
The above shows the following error
wrong number of arguments (1 for 0)
Jak zaokrąglić to do 2 miejsc po przecinku?
Okrągły float # może przyjąć parametr w Ruby 1.9, a nie w Ruby 1.8. JRuby domyślnie wynosi 1,8, ale może działać w trybie 1,9 .
źródło
(5.6).round(2)
wraca tylko 5,6sprintf('%.2f', number)
to tajemniczy, ale bardzo skuteczny sposób formatowania liczb. Wynik jest zawsze ciągiem, ale ponieważ zaokrąglasz, zakładam, że i tak robisz to w celach prezentacyjnych.sprintf
możesz formatować dowolną liczbę prawie w dowolny sposób, i wiele więcej.Pełna dokumentacja sprintf: http://www.ruby-doc.org/core-2.0.0/Kernel.html#method-i-sprintf
źródło
'%.2f' % number
również działa częściej, przynajmniej z mojego doświadczenia.sprintf
(lubformat
)%
wersję. Omówiono tutaj pewne powody , głównie dotyczące czytelności. Nie żebyśmy wszyscy musieli postępować zgodnie z przewodnikiem po stylu, podając tylko kilka powodów :)0.566666666666666
zaokrągla do0.57
"%.2f"
zaokrągla w5
dół zamiast w górę, czy jest jakiś sposób, aby to naprawić?Edytować
Po otrzymaniu opinii wydaje się, że oryginalne rozwiązanie nie działa. Dlatego zaktualizowałem odpowiedź jako jedną z sugestii.
Inne odpowiedzi mogą działać, jeśli chcesz mieć zaokrąglone liczby do 2 miejsc po przecinku. Ale jeśli chcesz mieć liczby zmiennoprzecinkowe z pierwszymi dwoma miejscami po przecinku bez zaokrąglania , te odpowiedzi nie pomogą.
Tak więc, aby uzyskać liczbę zmiennoprzecinkową z pierwszymi dwoma miejscami po przecinku, użyłem tej techniki. W niektórych przypadkach nie działa
z
5.666666666666666666666666
, zwróci5.66
zamiast zaokrąglenia5.67
. Mam nadzieję, że to komuś pomożeźródło
def float_of_2_decimal(float_n) num = float_n.to_s.split('.') num[1] = num[1][0..1] num.join(".").to_f end
Lub znacznie prostszy możesz użyćfloat_n.to_d.round(2, :truncate).to_f
11111111111111111.222222222222222
jako wejście, pierwszy ONE1.11
i druga pokazuje1.11111111111111e+16
Spróbuj tego:
źródło
aby obciąć ułamek dziesiętny, użyłem następującego kodu:
Jeśli chcesz skrócić do 2 miejsc po przecinku, użyj
Integr(a*100)*0.01
źródło