我想显示一个数字到小数点后2位。

我想我可以在JavaScript中使用toPrecision(2)。

但是,如果这个数字是0.05,我得到0.0500。我宁愿它保持不变。

在JSbin上可以看到。

最好的方法是什么?

我可以想到编写一些解决方案,但我想象(我希望)像这样的东西是内置的?


当前回答

您可以尝试混合使用Number()和toFixed()。

将目标数字转换为具有X位数字的漂亮字符串,然后将格式化后的字符串转换为数字。

(myVar).toFixed(2))


请看下面的例子:

var myNumber = 5.01; 变量乘数 = 5; $('#actionButton').on('click', function() { $('#message').text( myNumber * 乘数 ); }); $('#actionButton2').on('click', function() { $('#message').text( Number( (myNumber * multiplier).toFixed(2) ) ); }); <script src=“https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js”></script> <按钮 id=“动作按钮”>奇怪的数字</button> <按钮 id=“动作按钮2”>不错的数字</button> <div id=“message”></div>

其他回答

你可以用toFixed函数来做,但它在IE中有bug。如果你想要一个可靠的解决方案,看看我的答案。

函数舍入(值,小数){ 返回数字(Math.round(价值+“e”+小数)+“e -”+小数); }

轮(1.005,2);//返回1.01 轮(1.004,2);//返回1而不是1.00

答案就在这个链接上:http://www.jacklmoore.com/notes/rounding-in-javascript/

toFixed()方法使用定点表示法格式化数字。

这是语法

numObj.toFixed([digits])

参数Digits是可选的,默认为0。返回类型是字符串而不是数字。但是你可以把它转换成数字

numObj.toFixed([digits]) * 1

它也可以抛出异常,如TypeError, RangeError

这里是浏览器的完整细节和兼容性。

let a = 0.0500
a.toFixed(2);

//output
0.05

number.parseFloat(2)可以工作,但它返回一个字符串。

如果你想保留它作为一个数字类型,你可以使用:

数学。整数(数字* 100)/ 100