Javascript Math.floor Funktion Fehler oder Implementierungsgeheimnis?

8
%Vor%

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?

    
darethas 14.08.2012, 18:13
quelle

5 Antworten

7

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: Ссылка

    
Šime Vidas 14.08.2012, 18:26
quelle
5

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%     
Jonathan S. 14.08.2012 18:27
quelle
2

Wenn ich in Chrome einfach 43.99999999999999999999999 in die Konsole eintippe, wird 44 ausgegeben. Gleitende Punkte sind Näherungen

    
Juan Mendes 14.08.2012 18:21
quelle
1

Siehe diese Problemumgehung:

Ссылка

%Vor%

Ausgabe: 43.9999999999999999 43

Korrekte Böden 43.999999999999999 bis 43.

    
Travis J 14.08.2012 18:25
quelle
1

Sie können sowohl eine Instanz von Number als auch ein Zahlenliteral übergeben.

%Vor%     
Justin Baker 16.08.2012 13:19
quelle

Tags und Links