Konvertieren von Double zu String ohne Präzision Verlust in javascript

Ich würde gerne konvertieren, eine floating point variable in einen string, ohne Verlust von Präzision.

I. e. Ich möchte den string auf die gleichen Informationen haben wie mein floating-point-variable enthält, seit ich den Ausgang für die weitere Verarbeitung (auch wenn es bedeutet, dass der string sehr lang sein und lesbar).

Diese deutlich mehr, würde ich gerne Funktionen für die zyklische Umwandlung

var dA = 323423.23423423e4;
var sA = toString(dA);
var dnA = toDouble(sA);

und ich möchte, dnA-und dA werden gleich

Dank

PS: Quellen im internet in der Regel darüber reden, wie Runde Saiten, aber ich habe keine Informationen gefunden, auf die genaue Darstellung. Auch ich bin nicht daran interessiert, Beliebig genaue Berechnungen muss ich nur double-precision-floating-point-Arithmetik.

  • Hat der string muss eine Basis-10-Darstellung von floating-point-Wert?
  • ECMA-262 4.3.19 gibt an, dass die JavaScript (eher, EcmaScript) interne Zahlendarstellung ist ein 64-bit-IEEE-754-Wert an. Also, es ist nicht abhängig von der hardware.
  • Sicher, aber Sie sind nur gewährleistet, 15-17 Dezimalstellen, so ist es einfach zu erstellen Sie eine Zeichenfolge, die gerundet wird.
  • Falls der round-trip war-String → Zahl → Zeichenkette, würde ich dir Zustimmen. Nicht jeder base-10-floating-point-string hat eine exakte Darstellung im 64-bit IEEE 754. Jedoch, das Gegenteil ist anders: jeder IEEE 754 floating-point-Zahl ist, in der Tat, eine genaue String-Darstellung, denn es ist die Summe einer endlichen Menge von Potenzen von 2, von denen jede eine endliche Darstellung zur Basis 10. So ist die round-trip-Reihe → String → Zahl genau.
  • Ja, die Frage ist knifflig, wie die. Da die OQ ist (in der Tat), string-> Nummer> Zeichenfolge> Nummer. zB var dA = 123456323423.23423423e4; var sA = toString(dA); var dnA = toDouble(sA); Hätte, dnA = dA, aber nicht haben, dA gleich die interpretierte Zeichenfolge "123456323423.23423423e4". Noch, ich bin das löschen meiner ursprünglichen Kommentar, da Sie mehr richtig, als ich bin.
  • Basis 10 wäre nett, ist nicht erforderlich, obwohl.
  • so zu sprechen, möchte ich zum serialisieren des double-variable und ich bin gerade auf der Suche nach garantiert, dass der Standard (eher) implizite Konvertierung wie dA + " ist, dies zu tun und ist nicht Plattform - /browser-spezifisch. Ich habe festgestellt abschneiden der Probleme sehr viel in meiner wissenschaftlichen Karriere und machen Sie es einen Punkt, um Sie zu vermeiden 😉

InformationsquelleAutor wirrbel | 2012-12-07
Schreibe einen Kommentar