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')
War es hilfreich?

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. : -)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top