显示小数点后2位的浮点值的JavaScript

显示小数点后2位的浮点值的JavaScript,javascript,floating-point,precision,Javascript,Floating Point,Precision,我想显示一个小数点后两位的数字 我想我可以在JavaScript中使用toPrecision(2) 但是,如果数字是0.05,我得到0.0500。我宁愿它保持不变 在电视上看 最好的方法是什么 我可以考虑编写一些解决方案,但我可以想象(我希望)类似这样的东西是内置的?您可以使用toFixed函数来实现,但它很简单。如果您想要一个可靠的解决方案,请查看我的答案。请尝试而不是toPrecision float_num.toFixed(2); 注意:如果需要满足指定的长度,将用零进行取整或填充。不知

我想显示一个小数点后两位的数字

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

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

在电视上看

最好的方法是什么


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

您可以使用
toFixed
函数来实现,但它很简单。如果您想要一个可靠的解决方案,请查看我的答案。

请尝试而不是
toPrecision

float_num.toFixed(2);

注意:如果需要满足指定的长度,将用零进行取整或填充。

不知道我是如何得出这个问题的,但即使这已经问了很多年了,我想补充一个我遵循的快速简单的方法,它从未让我失望:

var num = response_from_a_function_or_something();

var fixedNum = parseFloat(num).toFixed( 2 );
函数舍入(值,小数){
返回数字(数学四舍五入(值+'e'+小数)+'e-'+小数);
}

圆形(1.005,2);//返回1.01

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


答案如下:我已经完成了这个功能。它工作正常,但返回字符串

function show_float_val(val,upto = 2){
  var val = parseFloat(val);
  return val.toFixed(upto);
}
toFixed()
方法使用定点表示法格式化数字

下面是语法

numObj.toFixed([digits])
数字参数是可选的,默认为0。并且返回类型是字符串而不是数字。但您可以使用

numObj.toFixed([digits]) * 1
它还可以抛出异常,如
TypeError
RangeError

这是浏览器中的配置和兼容性。

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

如果要将其保留为数字类型,可以使用:


Math.round(number*100)/100
您可以尝试混合
number()
toFixed()

将目标数字转换为一个包含X位的漂亮字符串,然后将格式化字符串转换为数字

Number((myVar).toFixed(2))


见下例:

var myNumber=5.01;
var乘数=5;
$('#actionButton')。在('单击',函数()上){
$('#message').text(myNumber*乘数);
});
$('#actionButton2')。在('单击',函数()上){
$('#message').text(数字((myNumber*乘数).toFixed(2));
});

奇怪的数字
好数字

还有
Intl
API,可以根据您的语言环境值设置小数格式。如果十进制分隔符不是点而是逗号,这一点尤其重要,就像德国的情况一样

Intl.NumberFormat('de-DE').formatToParts(0.05).reduce((acc, {value}) => acc += value, '');
请注意,这将四舍五入到最多3位小数,就像上面在默认情况下建议的
round()
函数一样。如果要自定义该行为以指定小数位数,则有用于最小和最大分数位数的选项:

Intl.NumberFormat('de-DE', {minimumFractionDigits: 3}).formatToParts(0.05)

技术应该得到发展,而不是适应国际环境。。。(顺便说一句,在节点js
float_num.toFixed(2);
工作正常)为什么
parseFloat()?只有当数字来自字符串时才应该使用它。在某些情况下,当我使用jquery从元素获取一些“data-”属性值时,如果我只使用toFixed,它会产生错误。parseFloat修复了它。是的,这就是我上面的意思,如果它来自一个字符串。但使用它总是不好的建议。但它返回字符串,而不是浮点!问题作者希望“显示”它,因此字符串是完美的,您可以始终使用parseFloat(float_num.toFixed(2))将字符串转换回float,同时只保留两个小数。@anwar您无法可靠地对float进行舍入(可以说您完全可以对float进行舍入)-您将得到类似于0.0500甚至0.050000000001的结果。你说的不是真的。如果我有'43.01'和parseFloat,那么我会得到43.01,但是如果我有'43.10',我会得到43.1:D,这不是我想要的。谢谢你的好参考。不,输出是
“0.05”
(在Chrome开发工具中运行),这不是一回事
Intl.NumberFormat('de-DE', {minimumFractionDigits: 3}).formatToParts(0.05)