14.3.4 格式化货币值

在计算产品价值或购物车总价的时候,我们通常会包括成本,带上两个小数位数,例如9.99。但是,即便货币值是一个整数,它通常也带有两个0,例如10.00。并且,像8.9这样的货币值也写成8.90。遗憾的是,JavaScript不会以那样的方式来看待数字:它舍去0(例如,用10而不是10.00,用8.9而不是8.90)。

幸运的是,有一个用于数字的方法toFixed(),它允许我们将一个数字转换为一个字符串,以匹配想要保留的小数位数。要使用这个函数,在数字的后面添加一个句点(或者在包含一个数字的变量名的后面),后面跟着toFixed(2):


var cost=10;

var printCost=’$’+cost.toFixed(2);//$10.00


传递给toFixed()的数字决定了放置多少个小数位数。对于货币,使用2最终会得到类似10.00或9.90的结果;如果使用3,将会得到3个小数位数,例如10.000或9.900。

如果数字一开始所带有的小数位数比你指定的位数要多,数字将会舍入到指定的小数位数。例如:


var cost=10.289;

var printCost=’$’+cost.toFixed(2);//$10.29


在这个例子中,10.289向上舍入为10.29。

注意:toFixed()方法只对数字有效。如果你使用一个字符串,最终将得到一个错误:


var cost=’10’;//a string

var printCost=’$’+cost.toFixed(2);//error


要解决这个问题,需要像14.3.1节介绍的那样,将该字符串转换为一个数字:


var cost=’10’;//a string

cost=+cost;//or cost=Number(cost);

var printCost=’$’+cost.toFixed(2);//$10.00