1

我试图在下面的代码中四舍五入到两位小数,但是,在许多情况下,控制小数位数的数学四舍五入方法对我不起作用。

   var newKitAmount = 1;
   var priceNumber =  168;
   var updatedTotal = Math.round(priceNumber * newKitAmount*100)/100;
   alert("total is : " + updatedTotal); //OUTPUTS 168 instead of 168.00

生成的输出:168

期望的输出:168.00

示例二:5 * 2 = 10

期望的输出:10.00

JS小提琴

我究竟做错了什么?我该如何解决?

4

2 回答 2

9

如果要在字符串中的点后获得固定位数,则应使用toFixed :

var updatedTotal = (priceNumber * newKitAmount).toFixed(2);
于 2012-12-09T14:57:15.487 回答
1

您应该使用函数进行舍入,因为 Firefox 和 Chrome 之间的差异与 toFixed 的舍入方式不同...

function toFixed(a,b){ //where a is the number and b is the number of decimals
    var m = Math.pow(10,b);
    return Math.round(parseFloat(a)*m)/m;
}
于 2013-05-25T19:33:48.263 回答