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

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

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

在JSbin上可以看到。

最好的方法是什么?

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


当前回答

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

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

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

其他回答

let a = 0.0500
a.toFixed(2);

//output
0.05

我做了这个函数。它工作正常,但返回字符串。

function show_float_val(val,upto = 2){
  var val = parseFloat(val);
  return val.toFixed(upto);
}

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

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

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

还有一个Intl API可以根据你的locale值来格式化小数。这一点很重要,特别是当小数分隔符不是点"."而是逗号",",就像在德国的情况一样。

Intl.NumberFormat('de-DE').formatToParts(0.05).reduce((acc, {value}) => acc += value, '');

请注意,这将最多舍入到3位小数点后,就像上面默认情况下建议的round()函数一样。如果你想自定义行为来指定小数点后的位数,有最小和最大分数位数的选项:

Intl.NumberFormat('de-DE', {minimumFractionDigits: 3}).formatToParts(0.05)
float_num = parseFloat(float_num.toFixed(2))