Mengapakah toFixed Not Rounding Values ​​dengan Tepat dalam Javascript?

Patricia Arquette
Lepaskan: 2024-10-22 14:47:02
asal
399 orang telah melayarinya

Why is toFixed Not Rounding Values Accurately in Javascript?

untukDiperbaiki Tidak Membundarkan Dengan Tepat dalam Javascript

Dalam konteks mengurus nilai kotak semak dalam Javascript, pengguna mungkin menghadapi cabaran di mana toFixed(2 ) kaedah tidak membundarkan nilai dengan sewajarnya. Sebagai contoh, nilai 859.385 mungkin dipaparkan sebagai 859.38 dan bukannya 859.39 yang dijangkakan.

Ketidakkonsistenan dan Ketepatan Penyemak Imbas

Adalah penting untuk ambil perhatian bahawa kaedah toFixed boleh bertindak secara berbeza berdasarkan pelayar yang digunakan. Untuk menangani ketidakkonsistenan penyemak imbas dan memastikan pembundaran yang konsisten merentas penyemak imbas, penyelesaian yang disyorkan ialah menggunakan kaedah toFixed10 atau fungsi tersuai berikut:

<code class="javascript">function toFixed( num, precision ) {
    return (+(Math.round(+(num + 'e' + precision)) + 'e' + -precision)).toFixed(precision);
}</code>
Salin selepas log masuk

Pelaksanaan Fungsi Tersuai

Menggabungkan fungsi tersuai untukTetap dalam kod yang disediakan memerlukan pengubahsuaian berikut:

<code class="javascript">var standardprice = parseFloat($('#hsprice_'+this.id.split('_')[1]).val());
var price =  parseFloat($('#hprice_'+this.id.split('_')[1]).val());
var discount =  parseFloat($('#hdiscount_'+this.id.split('_')[1]).val());
var deposit =  parseFloat($('#hdeposit_'+this.id.split('_')[1]).val());

var currSprice = parseFloat($('#hTotalSprice').val());
var currPrice = parseFloat($('#hTotalPrice').val());
var currDiscount = parseFloat($('#hTotalDiscount').val());
var currDeposit = parseFloat($('#hTotalDeposit').val());

currSprice += standardprice;
currPrice += price;
currDiscount += discount;
currDeposit += deposit;

$('#lblTotalSprice').text('$'+addCommas(toFixed(currSprice, 2)));
$('#lblTotalPrice').text('$'+addCommas(toFixed(currPrice, 2)));
$('#lblTotalDiscount').text('$'+addCommas(toFixed(currDiscount, 2)));
$('#lblTotalDeposit').text('$'+addCommas(toFixed(currDeposit, 2)));

$('#hTotalSprice').val(toFixed(currSprice, 2));
$('#hTotalPrice').val(toFixed(currPrice, 2));
$('#hTotalDiscount').val(toFixed(currDiscount, 2));
$('#hTotalDeposit').val(toFixed(currDeposit, 2));</code>
Salin selepas log masuk

Dengan melaksanakan fungsi tersuai ini, anda boleh memastikan pembundaran yang tepat tanpa mengira variasi penyemak imbas.

Atas ialah kandungan terperinci Mengapakah toFixed Not Rounding Values ​​dengan Tepat dalam Javascript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!