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

Javascript 如何使用Number()将字符串转换为数字而不丢失小数点?,javascript,Javascript,我试过了 num = 0.5; num = Number(num.toPrecision(2)); 我希望结果为0.50,但它返回0.5。toPrecision方法返回数字的字符串表示形式。若您将其传递给Number,它会将其解析为一个数字,并得到一个数字值。数字0.5和数字0.50精确相等;当您打印或记录数字0.5时,不会得到任何额外的数字,因为这正是数字的默认字符串转换的工作方式。事实上,这就是原因。精度是存在的 JavaScript数字的本质是,想要保留尾随的小数零位数是没有意义的。数

我试过了

num = 0.5;
num =  Number(num.toPrecision(2));
我希望结果为0.50,但它返回0.5。

toPrecision方法返回数字的字符串表示形式。若您将其传递给Number,它会将其解析为一个数字,并得到一个数字值。数字0.5和数字0.50精确相等;当您打印或记录数字0.5时,不会得到任何额外的数字,因为这正是数字的默认字符串转换的工作方式。事实上,这就是原因。精度是存在的


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

处理数字时,0.5和0.50都是相同的,因此存储在RAM中。JavaScript无法区分它们

但是,.toPrecision返回一个字符串,可以区分0.05和0.5,因为它们是两个不同的字符串,其中第一个字符串长4字节,第二个字符串长3字节

所以,基本上,如果您想输出0.50,那么只需使用.toPrecision,而不要将其转换回数字


0.5和0.50是一回事。他们是同一个号码。您可以将它们输出为具有不同小数位数的字符串,但您在这里处理的是数字。您正在将数字转换为字符串,然后再转换为数字。toPrecision返回一个字符串。然后将其传递给数字构造函数以再次获取数字。没有必要那样做。如果您想要的只是具有适当精度的字符串表示,请放弃数字构造函数。
 0.5  ==  0.50
"0.5" != "0.50"