Heim > Web-Frontend > js-Tutorial > Wie kann verhindert werden, dass JavaScript große ganze Zahlen in Strings in wissenschaftliche Notation umwandelt?

Wie kann verhindert werden, dass JavaScript große ganze Zahlen in Strings in wissenschaftliche Notation umwandelt?

Barbara Streisand
Freigeben: 2024-12-10 08:59:10
Original
741 Leute haben es durchsucht

How to Prevent JavaScript from Converting Large Integers to Scientific Notation in Strings?

Wissenschaftliche Notation für große ganze Zahlen in JavaScript

JavaScript konvertiert ganze Zahlen, die länger als 21 Ziffern sind, in einem String-Kontext in die wissenschaftliche Notation. Wenn Sie eine Ganzzahl als Teil einer URL drucken müssen, wie verhindern Sie, dass die Konvertierung erfolgt?

Lösung

JavaScript stellt die Number.toFixed-Methode bereit, aber wenn die Zahl größer oder gleich 1e21 mit einer Genauigkeit von bis zu 20 ist, wird wissenschaftlich verwendet Notation. Andernfalls könnten Sie es selbst implementieren, aber es wäre chaotisch.

function toFixed(x) {
  if (Math.abs(x) < 1.0) {
    var e = parseInt(x.toString().split('e-')[1]);
    if (e) {
        x *= Math.pow(10,e-1);
        x = '0.' + (new Array(e)).join('0') + x.toString().substring(2);
    }
  } else {
    var e = parseInt(x.toString().split('+')[1]);
    if (e > 20) {
        e -= 20;
        x /= Math.pow(10,e);
        x += (new Array(e+1)).join('0');
    }
  }
  return x;
}
Nach dem Login kopieren

Die obige Methode verwendet eine kostengünstige und einfache String-Wiederholung ((new Array(n 1)).join(str)). Sie können darüber hinaus auch String.prototype.repeat definieren und die russische Bauernmultiplikation verwenden.

Bitte beachten Sie, dass diese Antwort nur für die Anzeige großer Zahlen ohne Verwendung der wissenschaftlichen Notation gilt. In allen anderen Fällen sollten Sie eine BigInt-Bibliothek wie BigNumber, Leemons BigInt oder BigInteger verwenden. Darüber hinaus wird in Kürze ein neues natives BigInt verfügbar sein, das von Chromium und Chromium-basierten Browsern (Chrome, neuer Edge [späte Version 79], Brave) und Firefox unterstützt wird und in der Entwicklung Unterstützung für Safari bietet.

So konvertieren Sie mit BigInt: BigInt(n).toString()

Beispiel:

const n = 13523563246234613317632;
console.log("toFixed (wrong): " + n.toFixed());
console.log("BigInt (right):  " + BigInt(n).toString());
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann verhindert werden, dass JavaScript große ganze Zahlen in Strings in wissenschaftliche Notation umwandelt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage