toPrecision(2)
。但是,如果数字是0.05
,我会得到0.0500
。我希望它保持不变。在JSbin上查看它。
做到这一点的最佳方法是什么?
我认为编码一些解决方案,但我想(我希望)内置类似的东西吗?
#1 楼
float_num.toFixed(2);
注意:如果需要,
toFixed()
将舍入或填充零以符合指定的长度。#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。返回类型为字符串而不是数字。但是您可以使用
将其转换为数字,也可能引发诸如
TypeError
,RangeError
之类的异常。浏览器。
#10 楼
我做了这个功能。它工作正常,但返回字符串。function show_float_val(val,upto = 2){
var val = parseFloat(val);
return val.toFixed(upto);
}
评论
但是它返回字符串,而不是浮点数!
–安瓦尔
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