Ich habe eine Frage bezüglich der Funktion toFixed (). Wenn ich einen Schwimmer z. - 3.123123423 und 0 . Wie kann ich es mit toFixed (2) in ein Eingabefeld ausgeben, so dass die Eingabefeldwerte 3.12 und 0 sind. Ich meine, wenn der Wert ganzzahlig ist, möchte ich es ausgeben, ohne nach .00 :)
Beachten Sie, dass toFixed () IE ist gebrochen und in der Regel nicht verlässlich sein auf. Ärgerliche aber genau gerundete Ersatzfunktionen sind dort gegeben.
Die Ergebnisse können bei anderen Browsern abweichen. Also siehe bitte diesen Link Wie schreibe ich einen Prototyp für Number .toFixed in JavaScript?
Number.toFixed erzeugt einige mathematisch bizarre Ergebnisse und gibt Ihnen die Nachkommastellen, nach denen Sie gefragt haben, ob Sie sie benötigen oder nicht.
Math.round ist mathematisch korrekt, lässt aber keine Genauigkeit zu.
Hier ist eine Funktion, die mathematisch korrekt ist (Fliesskomma-Fehler werden ignoriert) und das gibt Ihnen, was Sie wollen.
%Vor%Der Algorithmus ist: Scale up, so dass die gewünschten Ziffern links vom Dezimalpunkt liegen, addiere .5 (so dass & gt; = .5 an der ersten insignifikanten Stelle ein Inkrement des ganzzahligen Teils verursacht), < em> truncate (nicht rund!) und zurück skalieren. Es gibt die Möglichkeit, dass sich Gleitkommafehler einnisten, aber es ist eine bessere Sicht als die elende toFixed-Funktion.
Ausprobieren:
%Vor%Wegen der Möglichkeit eines Gleitkommafehlers kann die Verkleinerung ein Ergebnis wie "3.00000000001" ergeben, was ärgerlich ist. So etwas sollte sich darum kümmern.
%Vor%Sie haben den gewünschten Rundungsalgorithmus nicht klargestellt. Runden in Richtung Plus-Unendlichkeit ist die Rundung, die Sie in der Schule gelernt haben, wo Sie um & gt; = .5 aufwärts (d. H. In Richtung positiver Unendlichkeit). Ich glaube, dass in der Buchhaltung der richtige Rundungsalgorithmus (außerhalb der Schweiz und Argentinien zumindest) von Null entfernt ist. Einfach:
%Vor%Wenn die Ergebnisse für die menschliche Präsentation sind, ist Intl.NumberFormat eine Möglichkeit, da Sie sowohl die minimale als auch die maximale Anzahl der Nachkommastellen angeben können. Zum Zeitpunkt des Schreibens ist es nicht gerade weit verbreitet und verwendet, vorausgesetzt, dass Chrome die Spezifikation korrekt implementiert, den gleichen undurchdringlichen und einfachen falschen Trunkierungsalgorithmus wie Fixed. Interessanterweise verwendet der "Währungs" -Stil roundAwayFromZero (oder rund um die Hälfte, wenn der Währungscode "CHF" ist, was eine nette Geste ist).
Hier ist eine Funktion, die ich mir ausgedacht habe, nachdem ich für eine Weile über dasselbe Problem nachgedacht habe:
%Vor%Nach dieser Frage wird diese Funktion wie folgt zurückgegeben:
%Vor% Beachten Sie, dass die Methode toFixed
des JavaScript-Objekts Number
tatsächlich ein String
zurückgibt. Die obige Funktion toFixed
gibt Number
zurück. Wenn Sie lieber ein String
haben möchten, verwenden Sie stattdessen Folgendes:
Tags und Links javascript function