Heim  >  Artikel  >  Web-Frontend  >  Warum führt toFixed(2) bei bestimmten Dezimalwerten eine falsche Rundung durch?

Warum führt toFixed(2) bei bestimmten Dezimalwerten eine falsche Rundung durch?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-22 14:40:02417Durchsuche

Why is toFixed(2) Rounding Incorrectly for Certain Decimal Values?

Javascript toFixed-Rundungsdiskrepanzen

toFixed(2) rundet für bestimmte Dezimalwerte nicht auf und zeigt im bereitgestellten Beispiel 859,38 statt 859,39 an . Diese Diskrepanz kann auf Variationen in den Browser-Implementierungen der toFixed()-Methode zurückgeführt werden.

Um dieses Problem zu umgehen und eine konsistente Rundung über alle Browser hinweg sicherzustellen, sollten Sie die Verwendung der von blg empfohlenen toFixed10()-Methode in Betracht ziehen. Diese Methode ermöglicht eine genaue Rundung auch für Werte mit erweiterter Genauigkeit.

Hier ist ein aktualisierter Codeausschnitt, der toFixed10() enthält:

function toFixed(num, precision) {
    return (+(Math.round(+(num + 'e' + precision)) + 'e' + -precision)).toFixed(precision);
}
...
$('#lblTotalSprice').text('$' + addCommas(toFixed(currSprice, 2)));
$('#lblTotalPrice').text('$' + addCommas(toFixed(currPrice, 2)));
$('#lblTotalDiscount').text('$' + addCommas(toFixed(currDiscount, 2)));
$('#lblTotalDeposit').text('$' + addCommas(toFixed(currDeposit, 2)));

Das obige ist der detaillierte Inhalt vonWarum führt toFixed(2) bei bestimmten Dezimalwerten eine falsche Rundung durch?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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