我想显示一个小数点后两位的数字。我想可以在JavaScript中使用toPrecision(2)。但是,如果数字是0.05,我会得到0.0500。我希望它保持不变。

在JSbin上查看它。

做到这一点的最佳方法是什么?

我认为编码一些解决方案,但我想(我希望)内置类似的东西吗?

#1 楼

float_num.toFixed(2);


注意:如果需要,toFixed()将舍入或填充零以符合指定的长度。

评论


但是它返回字符串,而不是浮点数!

–安瓦尔
16年6月7日在9:58

问题作者想“显示”它,因此字符串是完美的

–克里斯托弗·马洛伊斯(Christophe Marois)
16-10-18在21:35

而且,您始终可以使用parseFloat(float_num.toFixed(2))将字符串转换回浮点数,同时仅保留两位小数。

–汉克唱片
17年2月15日在15:07

@anwar,您不能可靠地使一个浮点数四舍五入(可以说您可以完全舍入一个浮点数)-您将得到0.0500甚至0.0500000000001的值。参见floating-point-gui.de

– jmc
18年1月12日,0:08



@Hankrecords说的不是事实。如果我有'43 .01'并且我parseFloat然后我得到43.01但如果我有'43 .10'我将得到43.1:D不是我想要的。

– Lucian Tarna
18-10-9在15:11

#2 楼

您可以使用toFixed函数来完成此操作,但是在IE中却存在问题。如果您需要可靠的解决方案,请在这里查看我的答案。

评论


应该开发技术而不是适应IE ...(顺便说一句,在节点js中float_num.toFixed(2);工作正常)

–伙计
13年8月21日在11:15

#3 楼

尝试使用toFixed而不是toPrecision

#4 楼

不知道我是怎么解决这个问题的,但是即使被问到已经有很多年了,我还是想添加一种快速而简单的方法,并且它永远不会让我失望:

var num = response_from_a_function_or_something();

var fixedNum = parseFloat(num).toFixed( 2 );


评论


为什么在那里parseFloat()?仅当数字来自字符串时才应使用它。

– alex
16年1月13日在11:00

在某些情况下,当我通过jquery从某个元素获取一些“ data-”属性值时,如果仅使用toFixed,则会产生错误。 parseFloat对其进行了修复。

–全景图
16年1月13日在11:36

是的,如果它来自字符串,这就是我上面的意思。但是使用它始终是个坏建议。

– alex
16年1月13日在13:23

#5 楼

function round(value, decimals) { return Number(Math.round(value+'e'+decimals)+'e-'+decimals); }


round(1.004,2); //返回1而不是1.00


答案是通过以下链接:http://www.jacklmoore.com/notes/rounding-in-javascript/

#6 楼

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

如果您想将其保存为数字类型,则可以使用:

#7 楼

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

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

请参见以下示例:




 Number( (myVar).toFixed(2) ) 

 var myNumber = 5.01;
var multiplier = 5;
$('#actionButton').on('click', function() {
  $('#message').text( myNumber * multiplier );
});

$('#actionButton2').on('click', function() {
  $('#message').text( Number( (myNumber * multiplier).toFixed(2) ) );
}); 




评论


谢谢您的参考。

–Arman H
19-10-24在8:38

#8 楼

let a = 0.0500
a.toFixed(2);

//output
0.05


#9 楼


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


,这是语法

numObj.toFixed([digits])


digits参数是可选的,默认情况下为0。返回类型为字符串而不是数字。但是您可以使用
将其转换为数字,也可能引发诸如TypeErrorRangeError

之类的异常。浏览器。

#10 楼

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

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