Javascript float subtrahieren

8

Ich habe mich gefragt, wie ich zwei negative Gleitkommazahlen in Javascript subtrahieren kann. Ich habe es versucht:

%Vor%

und das Ergebnis ist -0.30000000000000004 . Mache ich etwas falsch? Was muss ich tun, um -0.3 zu erhalten?

    
Teneff 17.05.2011, 08:02
quelle

5 Antworten

13

Nein, mit Ihrem Code ist nichts falsch, die meisten Dezimalbrüche können nicht genau dargestellt werden binär, benutze

%Vor%

Dabei ist x die Anzahl der gewünschten Dezimalstellen und number das Ergebnis der Subtraktion.

    
Alberto Zaccagni 17.05.2011, 08:05
quelle
2

Der Grund Ihres Problems wird hier erklärt: Warum gibt der Modulo-Operator die Bruchzahl in Javascript zurück?

Eine mögliche Lösung könnte sein:

%Vor%     
Fabrizio D'Ammassa 17.05.2011 08:09
quelle
1

toFixed() ist was du suchen musst.

ZB

%Vor%

wobei x die Anzahl der Nachkommastellen ist. Es ist optional mit dem Standardwert 0.

Mehr hier: Javascript Number.toFixed () Methode

    
Javascript is GOD 17.05.2011 08:06
quelle
1

Sie tun nichts falsches, was Sie sehen, ist der Nebeneffekt von Computern, die Zahlen in der Basis 2 speichern. In der Basis 10 kann 1/3 nicht genau dargestellt werden: .33333333 (mit einem Balken über der 3). Das gleiche gilt für 1/10 und 1/5 in Basis 2 oder Binär. Die Antwort, die Sie sehen, ist lediglich das Ergebnis eines Rundungsfehlers. Wenn Sie mit Geld arbeiten, wird es oft empfohlen, Werte nur als Cent zu speichern, um Gleitkommafehler zu vermeiden.

Was das Reparieren des Ergebnisses betrifft, können Sie etwas tun wie:

%Vor%     
daalbert 17.05.2011 08:23
quelle
0

Eine andere mögliche Lösung könnte dies sein:

%Vor%

Wo x die Toleranz in Dezimalzahlen sein sollte, die Sie möchten.

Wenn ich dies mit einem x von 16 ausführe, bekomme ich eine Ausgabe von -0.3 .

%Vor%

Lass es mich wissen.

    
Cristian Douce 28.05.2013 02:47
quelle

Tags und Links