Wie erhalte ich die Dezimalgenauigkeit einer Fließkommazahl in Javascript?

8

Was ich eigentlich gerne hätte, ist das Gegenteil von Number.prototype.toPrecision (), was bedeutet, dass, wenn ich eine Zahl habe, welche dezimale Genauigkeit es derzeit hat? ZB

%Vor%     
JussiR 04.03.2012, 08:09
quelle

7 Antworten

14

Eine mögliche Lösung (hängt von der Anwendung ab):

%Vor%     
Manish 04.03.2012, 08:25
quelle
16

Für alle, die sich fragen, wie man das schneller macht (ohne in eine Zeichenkette zu konvertieren), hier ist eine Lösung:

%Vor%

Edit: Eine vollständigere Lösung mit abgedeckten Kantenfällen:

%Vor%     
Mourner 09.01.2015 16:48
quelle
3

Wenn Sie mit "Präzision" "Dezimalstellen" meinen, dann ist das unmöglich, weil Floats binär sind . Sie haben keine Dezimalstellen, und die meisten Werte, die eine kleine Anzahl von Dezimalstellen haben, haben wiederkehrende Stellen in Binärzahlen, und wenn sie zurück in Dezimalzahlen übersetzt werden, ergibt dies nicht unbedingt die ursprüngliche Dezimalzahl Nummer.

Jeder Code, der mit den "Dezimalstellen" eines Gleitkommazahlens arbeitet, kann bei einigen Zahlen zu unerwarteten Ergebnissen führen.

    
Michael Borgwardt 04.03.2012 08:40
quelle
1

Versuchen Sie Folgendes

%Vor%     
JaredPar 04.03.2012 08:25
quelle
1

Es gibt keine native Funktion, um die Anzahl der Dezimalstellen zu bestimmen. Sie können die Zahl in einen String umwandeln und dann den Offset vom Dezimaltrennzeichen . :

zählen %Vor%

Aber es liegt in der Natur von Schwimmern, Sie zu täuschen. 1 kann genauso gut durch 0.00000000989 oder etwas repräsentiert werden. Ich bin nicht sicher, wie gut das oben genannte tatsächlich in realen Anwendungen funktioniert.

    
rodneyrehm 04.03.2012 10:01
quelle
0

Basing on @ blackpla9ue Kommentar und Berücksichtigung von Zahlen exponentiellen Format:

%Vor%     
Boolean_Type 30.06.2017 12:49
quelle
0

Funktionieren die folgenden Ansätze?

%Vor%

oder

%Vor%     
Eni 11.12.2017 19:52
quelle

Tags und Links