我正在使用javascript綁定到某些複選框,並且toFixed(2)
未四捨五入。任何想法,爲什麼它不是四捨五入?例如,如果號碼是859.385
,它只顯示859.38
而不是859.39
。Javascript tofixed Not Rounding
我也讀過toFixed
可以取決於你使用的瀏覽器有所不同,任何人都知道這種方式,以便我的JavaScript計算符合我的PHP計算嗎?
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(currSprice.toFixed(2)));
$('#lblTotalPrice').text('$'+addCommas(currPrice.toFixed(2)));
$('#lblTotalDiscount').text('$'+addCommas(currDiscount.toFixed(2)));
$('#lblTotalDeposit').text('$'+addCommas(currDeposit.toFixed(2)));
$('#hTotalSprice').val(currSprice.toFixed(2));
$('#hTotalPrice').val(currPrice.toFixed(2));
$('#hTotalDiscount').val(currDiscount.toFixed(2));
$('#hTotalDeposit').val(currDeposit.toFixed(2));
由於0.5正好在0和1之間,所以四捨五入只是一個約定,我想知道確保一個特定結果的真正重要性。另一方面,爲了測試你的代碼,你需要可預測的結果,測試很重要,所以這是一個很好的理由。 – 2014-05-09 17:44:45
這裏提示爲什麼'.toFixed'舍入看起來很不直觀:'(0.1).toFixed(20)'。(請注意,IE的實現給出了「直觀」的結果,而其他瀏覽器給出了符合標準的值。) – Noyo 2015-05-17 20:30:57
我對這裏的類似問題的回答是:http://stackoverflow.com/a/37751946/2261514 – Pawel 2016-06-10 15:45:04