erzeugt 43 im Browser.
%Vor%erzeugt 43
%Vor%wieder 43
Allerdings
%Vor%erzeugt 44.
Die magische Zahl von 9 nach dem Dezimalpunkt scheint 15 * zu sein.
Warum ist das?
Akzeptiert die Funktion Math.floor außerdem die Nummer als Zahlenobjekt oder als Zahlenwert?
Das binäre Fließkommaformat mit doppelter Genauigkeit nach IEEE 754 (das ist das, was JavaScript für seinen Number -Typ verwendet) gibt Ihnen eine Genauigkeit von 15 bis 17 signifikanten Dezimalziffern.
Dies ergibt 15 - 17 signifikante Dezimalstellen. Wenn ein Dezimalzeichenkette mit höchstens 15 signifikanten Dezimalzahlen wird in umgewandelt IEEE 754 doppelte Genauigkeit und dann wieder in die gleiche Zahl umgewandelt mit einer signifikanten Dezimalzahl, dann sollte die letzte Zeichenkette mit der übereinstimmen Original; und wenn eine IEEE 754 doppelte Genauigkeit in a konvertiert wird Dezimal-String mit mindestens 17 signifikanten Dezimalstellen und dann konvertiert zurück zu verdoppeln, dann muss die endgültige Zahl mit dem Original [1] übereinstimmen.
Quelle: Ссылка
Doppelpräzisions-Gleitkommazahlen (auch bekannt als Doppelpunkte) können eine sehr große Anzahl von Werte, aber nur mit begrenzter Genauigkeit - 15-17 signifikante Ziffern. Wenn Sie Folgendes tun, werden Sie sehen, was passiert:
%Vor%Sie werden das Gleiche auch in anderen Sprachen sehen. Zum Beispiel PHP:
%Vor% Wenn ich in Chrome einfach 43.99999999999999999999999
in die Konsole eintippe, wird 44
ausgegeben. Gleitende Punkte sind Näherungen
Sie können sowohl eine Instanz von Number als auch ein Zahlenliteral übergeben.
%Vor%Tags und Links javascript