Nur zeigen Komma, wenn die Komponente Gleitkomma nicht .00 sprintf ist / printf
-
10-07-2019 - |
Frage
Ich bin schön Formatierung eine Gleitkommazahl aber will es als eine ganze Zahl erscheinen, wenn es keine relevante Gleitkommazahl ist.
d.
- 1.20 -> 1,2x
- 1,78 -> 1.78x
- 0,80 -> 0,8x
- 2.00 -> 2x
Das kann ich mit einem bisschen regex erreichen, aber fragen, ob es ein sprintf
-einzigen Weg, dies zu tun?
Ich mache es eher gemächlich in rubin etwa so:
("%0.2fx" % (factor / 100.0)).gsub(/\.?0+x$/,'x')
Lösung
Sie möchten %g
verwenden, anstatt %f
:
"%gx" % (factor / 100.00)
Andere Tipps
Sie können mischen und% g und% f wie folgt:
"%g" % ("%.2f" % number)
Wenn Sie Schienen verwenden, können Sie Schienen NumberHelper Methoden verwenden: http://api.rubyonrails.org/classes/ActionView/Helpers/NumberHelper. html
number_with_precision(13.001, precision: 2, strip_insignificant_zeros: true)
# => 13
number_with_precision(13.005, precision: 2, strip_insignificant_zeros: true)
# => 13.01
Seien Sie vorsichtig, weil Präzision alle Ziffern nach dem Komma in diesem Fall bedeutet.
ich am Ende mit
price = price.round(precision)
price = price % 1 == 0 ? price.to_i : price.to_f
Auf diese Weise können auch Zahlen anstelle von Strings bekommen
Ich kam gerade über diese, die fix oben hat nicht funktioniert, aber ich kam mit dieser, was für mich funktioniert:
def format_data(data_element)
# if the number is an in, dont show trailing zeros
if data_element.to_i == data_element
return "%i" % data_element
else
# otherwise show 2 decimals
return "%.2f" % data_element
end
end
Hier ist eine andere Art und Weise:
decimal_precision = 2
"%.#{x.truncate.to_s.size + decimal_precision}g" % x
oder als ein netter Einzeiler:
"%.#{x.truncate.to_s.size + 2}g" % x
Einfach mit Rails: http: // api .rubyonrails.org / classes / ActionView / Helpers / NumberHelper.html # Methode-i-number_with_precision
number_with_precision(value, precision: 2, significant: false, strip_insignificant_zeros: true)
Ich war auf der Suche für eine Funktion einen Schwimmer oder Dezimalzahl in Ruby on Rails (ca. nicht) zu kürzen, ich die nachfolgende Lösung herauszufinden, das zu tun:
Sie Jungs können in der Konsole versuchen, das Beispiel:
>> a=8.88
>> (Integer(a*10))*0.10
>> 8.8
Ich hoffe, dass es jemand hilft. : -)