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; }
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());
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!