JavaScript中保留小数点的函数

今天在做项目中,需要把价格保留两位小数点,但用parseFloat的方法不能够把整数格式成后面加两个小数位的数。在网上找,很多都是用Math.round的方法格式化的,太麻烦,后来找到了国外的这篇文章:《JavaScript Number Format – Decimal Precision》,里面介绍了我从未见过的两个函数——toFixedtoPrecision

Number.toFixed(),这个函数需要传入一个整数做为参数,用于决定保留几位小数点。用法如下:


var num = 10;
alert(num.toFixed(2)); // 返回 10.00
num = 123.45678;
alert(num.toFixed(3)); // 返回 123.457,它会自动四舍五入

Number.toPrecision()用法和Number.toFixed()一样,不过toPrecision中的参数是用来决定保留整位和小数位的总数。如下:


var num = 1234.5678;
alert(num.toPrecision(6)); // 返回 1234.57,它会自动四舍五入
alert(num.toPrecision(4)); // 返回 1235,它会自动四舍五入
alert(num.toPrecision(2)); // 返回 12e+3

如果想正常使用这两个函数,你的浏览器必需是Netscape 6.0+或者IE 5.5+,也就是说现在绝大多数的浏览器已经支持这两个函数了。需要注意的是这两个函数有时也会出现bug,如下的代码:


var num = 123.395;
alert(num.toFixed(2));
alert(num.toPrecision(5));

在IE中,它们都能够正确返回我们所期望的值:123.40,但在火狐和谷歌浏览器中却返回123.39。Bug原因《JavaScript Number Format – Decimal Precision》中已经给出了解释,有兴趣的朋友可以去看看。

此条目发表在 前端 分类目录,贴了 , , 标签。将固定链接加入收藏夹。

发表评论

电子邮件地址不会被公开。 必填项已被标记为 *

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>