JavaScript 显示一个浮点数到 2 个小数位

IT技术 javascript floating-point precision
2021-02-07 12:39:49

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

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

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

JSbin上看到它

做这个的最好方式是什么?

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

6个回答
float_num.toFixed(2);

注意:toFixed()如有必要,将舍入或填充零以满足指定的长度。

但它返回字符串,而不是浮点数!
2021-03-18 12:39:49
@anwar 你不能可靠地舍入浮点数(可以说你完全可以舍入浮点数) - 你会得到类似 0.0500 甚至 0.0500000000001 的值。参见浮点指南.de
2021-03-19 12:39:49
@Hankrecords 你说的不是真的。如果我有 '43.01' 并且我 parseFloat 然后我得到 43.01 但如果我有 '43.10' 我会得到 43.1 :D 不是我想要的。
2021-03-20 12:39:49
并且您始终可以使用 parseFloat(float_num.toFixed(2)) 将字符串转换回浮点数,同时只保留两位小数。
2021-03-22 12:39:49
问题作者想“显示”它,所以一个字符串是完美的
2021-04-11 12:39:49

你可以用这个toFixed函数来做,但它在 IE 中是有问题的如果您想要一个可靠的解决方案,请在此处查看我的回答

技术应该发展而不是适应IE......(顺便说一句。在node js中float_num.toFixed(2);工作正常)
2021-03-26 12:39:49

不知道我是怎么想到这个问题的,但即使已经问了很多年了,我想添加一个我遵循的快速简单的方法,它从来没有让我失望:

var num = response_from_a_function_or_something();

var fixedNum = parseFloat(num).toFixed( 2 );
在某些情况下,当我从元素中使用 jquery 获取一些“数据-”属性值时,如果我只使用 toFixed 它会产生错误。parseFloat 修复了它。
2021-03-21 12:39:49
是的,如果它来自 string,那就是我上面的意思但是使用它总是不好的建议。
2021-04-06 12:39:49
为什么parseFloat()在那里?仅当数字来自字符串时才应使用它。
2021-04-11 12:39:49

尝试toFixed代替toPrecision.

number.parseFloat(2) 有效,但它返回一个字符串。

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

Math.round(number * 100) / 100