2015-05-20 14 views
6

Ho una tabella generata dinamicamente che moltiplica il prezzo * qty. Alcuni dei prezzi sono in centesimi. Per esempioRotaie number_to_currency delete zero finale a destra del decimale

se il prezzo di un articolo è 0,0375 posso mostrare che nella mia tabella come

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

ma sulle quantità in cui il prezzo è un numero 2 decimali di serie ottengo

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

Ho bisogno di un modo per tagliare gli zero finali di un valore decimale. Tieni presente che l'output è in un blocco Model.each quindi non sono sicuro di poter modificare il parametro di precisione in modo condizionale.

risposta

12

tenta di specificare strip_insignificant_zeros opzione:

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

si dovrebbe rimuovere gli zeri dopo il separatore decimale. Here è la descrizione di questa opzione.

+0

Grazie! Questa risposta ha soddisfatto i miei requisiti poiché number_to_currency è all'interno di un ciclo. – ctilley79

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

Dal number_to_currency restituisce una stringa, è possibile utilizzare .remove(/0+$/) per rimuovere eventuali zeri finali:

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

Prova utilizzando round prima number_to_currency:

number_to_currency(33.95.round(4)) # $33.95 
number_to_currency(0.0375.round(4)) # $0.0375 
Problemi correlati