如何使用Number()将字符串转换为数字而不会丢失小数点?

时间:2017-07-09 13:03:51

标签: javascript

我试过

num = 0.5;
num =  Number(num.toPrecision(2));

我希望结果为0.50,但它返回0.5。

2 个答案:

答案 0 :(得分:2)

.toPrecision()方法返回数字的字符串表示形式。如果将其传递给Number(),它会将其解析为数字,结果会得到一个数字值。数字0.5和数字0.50完全相同;当您打印或记录号码0.5时,您不会获得任何额外的数字,因为默认字符串数字转换的工作方式。事实上,这就是.toPrecision()存在的原因。

JavaScript数字的本质是这样的,想要保留尾随小数零位数是没有意义的。数字是内部的二进制浮点值,因此尾随十进制小数位没有位置。

答案 1 :(得分:1)

当您处理Number时,0.50.50都是相同的,因此会将其存储在RAM中。 JavaScript有 no 方式区分它们。

但是,.toPrecision()会返回String,其中可以区分"0.05""0.5",因为它们是两个不同的{{1}其中第一个是4个字节长,第二个是3个字节长

基本上,如果您想输出String,那么只需使用0.50并执行而不是将其转换回{{1} }。

.toPrecision()