2015-05-20 9 views
6

Mam dynamicznie generowaną tabelę, która mnoży cenę * qty. Niektóre ceny są w częściachowych cenach. Na przykładRailsy number_to_currency delete końcowe zera z prawej strony liczby dziesiętnej

jeśli cena towaru jest 0,0375 mogę wyświetlać, że w moim stole jak

number_to_currency(0.0375,:precision => 4) 
=> $0.0375 

ale na ilości, gdzie cena jest średnia liczba 2 dziesiętny mam

number_to_currency(33.95,:precision => 4) 
    => $39.9500 

Potrzebuję sposobu na przycięcie końcowych zer o wartości dziesiętnej. Należy pamiętać, że dane wyjściowe znajdują się w bloku Model.each, więc nie jestem pewien, czy mogę warunkowo zmodyfikować parametr precyzji.

Odpowiedz

12

Spróbuj określić strip_insignificant_zeros opcję:

number_to_currency(33.95, precision: 4, strip_insignificant_zeros: true) 

Należy usunąć zer po separatorze dziesiętnym. Here to opis tej opcji.

+0

Dziękujemy! Ta odpowiedź spełniła moje wymagania, ponieważ number_to_currency znajduje się wewnątrz pętli. – ctilley79

0
number_to_currency(33.95,:precision => 2) 
0

Od number_to_currency zwraca ciąg, można użyć .remove(/0+$/) usunąć wszelkie końcowe zera:

number_to_currency(33.95,:precision => 4).remove(/0+$/) 
0

Spróbuj użyć round przed number_to_currency:

number_to_currency(33.95.round(4)) # $33.95 
number_to_currency(0.0375.round(4)) # $0.0375 
Powiązane problemy