我正在一个购物网站上工作,正在尝试计算产品的小计。
我从数组中获取价格,并从getJSON响应数组中获取数量。他们两个相乘
归结到我的小计。我可以更改数量,它将得出不同的小计。
但是,当我将数量更改为一定数量时,最终小计是
259.99999999994或一些长十进制数。我使用console.log检查$ price和$ qty。两者都是正确的格式,例如299.99和6个数量。我不知道会发生什么。如果有人可以帮助我,我将不胜感激。
这是我的Jquery代码。
$(".price").each(function(index, price){
$price=$(this);
//get the product id and the price shown on the page
var id=$price.closest('tr').attr('id');
var indiPrice=$($price).html();
//take off $
indiPrice=indiPrice.substring(1)
//make sure it is number format
var aindiPrice=Number(indiPrice);
//push into the array
productIdPrice[id]=(aindiPrice);
var url = update.php
$.getJSON(
url,
{productId:tableId, //tableId is from the other jquery code which refers to
qty:qty}, productId
function(responseProduct){
$.each(responseProduct, function(productIndex, Qty){
//loop the return data
if(productIdPrice[productIndex]){
//get the price from the previous array we create X Qty
newSub=productIdPrice[productIndex]*Number(Qty);
//productIdPrice[productIndex] are the price like 199.99 or 99.99
// Qty are Quantity like 9 or 10 or 3
sum+=newSub;
newSub.toFixed(2); //try to solve the problem with toFixed but
didn't work
console.log("id: "+productIdPrice[productIndex])
console.log("Qty: "+Qty);
console.log(newSub); **//newSub sometime become XXXX.96999999994**
};
再次感谢!
最佳答案
您几乎拥有它,但是.toFixed()
返回该值,它没有设置该值,例如,您执行了以下任一操作,它将正确显示:
newSub = newSub.toFixed(2);
//or...
console.log(newSub.toFixed(2));
将变量设置为
.toFixed(2)
值,或在显示时调用函数(这通常是最准确的,因为四舍五入误差未在计算中引入)。