2014-10-19 11 views
11

C'è un modo per stampare un decimale come percentuale, quindi solo le due cifre dopo il periodo?Rails: come stampare un decimale in percentuale?

I miei decimali saranno sempre compresi tra 1 e 0, quindi suppongo che funzionerebbe per chiamare number.round(2) a partire dal terzo carattere, ma non riesco a trovare la sintassi per questo ovunque.

Per chiarire, io voglio il numero da memorizzare come piena decimale, ma stampato come percentuale.

risposta

17

Probabilmente si vorrà utilizzare il metodo number_to_percentage. Ecco alcuni esempi su come usarlo.

number_to_percentage(100)          # => 100.000% 
number_to_percentage("98")          # => 98.000% 
number_to_percentage(100, precision: 0)       # => 100% 
number_to_percentage(1000, delimiter: '.', separator: ',')  # => 1.000,000% 
number_to_percentage(302.24398923423, precision: 5)    # => 302.24399% 
number_to_percentage(1000, locale: :fr)       # => 1 000,000% 
number_to_percentage("98a")          # => 98a% 
number_to_percentage(100, format: "%n %")      # => 100 % 

Opzioni:

:locale - Sets the locale to be used for formatting (defaults to current locale). 

:precision - Sets the precision of the number (defaults to 3). 

:significant - If true, precision will be the # of significant_digits. If false, the # of fractional digits (defaults to false). 

:separator - Sets the separator between the fractional and integer digits (defaults to “.”). 

:delimiter - Sets the thousands delimiter (defaults to “”). 

:strip_insignificant_zeros - If true removes insignificant zeros after the decimal separator (defaults to false). 

:format - Specifies the format of the percentage string The number field is %n (defaults to “%n%”). 

Oppure si può scrivere qualche rubino come il seguente:

class Numeric 
    def percent_of(n) 
    self.to_f/n.to_f * 100.0 
    end 
end 

p (1).percent_of(10) # => 10.0 (%) 
p (200).percent_of(100) # => 200.0 (%) 
p (0.5).percent_of(20) # => 2.5 (%) 
+4

Io sono solo curioso, se avete intenzione di copiare e incollare tutto dalla documentazione rotaie perché non solo fornire un link ad esso? o è questo il modo preferito di rispondere alle domande su Stackoverflow? – Alireza

+9

@Ali In realtà, questo è principalmente il modo migliore per farlo. Considerando che questa risposta in realtà dovrebbe attribuire la documentazione di Rails con un link, fornendo semplicemente un collegamento non è la migliore pratica per StackOverflow. Il collegamento potrebbe rompersi con il tempo o la documentazione potrebbe cambiare rendendo la risposta meno utile. Quindi, sì, sarebbe bello se ci fosse un link fornito, ma questa risposta è migliore di un semplice link alla documentazione. –

+2

Per i più pigri, è necessario 'includere ActionView :: Helpers :: NumberHelper' – Warpling

4

È possibile utilizzare number_to_percentage helper per stampare il numero in percentuale nella vista. se il vostro numero è compreso tra 0 e 1, allora si può ottenere con:

number_to_percentage(@number * 100, precision: 0) 

vedere il documentation