toString和valueOf截断十进制后的尾随0

时间:2010-05-20 15:31:51

标签: javascript tostring

在javascript中,我注意到toString和valueOf在小数后截断尾随0。例如:

var num = 0.00
var num2 = 0.0100

num.valueOf() or num.toString() // outputs 0
num2.valueOf() or num2.toString() // outputs 0.01

这是正常的行为,是否有某种方法可以保留尾随的0?

编辑:我改变了我原来的问题,因为我在经过一些测试后意识到上述问题是根源。感谢。

2 个答案:

答案 0 :(得分:4)

在小数点后截断尾随0不是toString也不是valueOf 当你以这种方式写小数时:

var num2 = 0.0100

您告诉您的翻译,变量 num2 应包含十进制数0.0100,即0.01,因为最后两个零值不重要。
十进制数是以十进制数表示的内存:

0.0100
0.010
0.01
0.01000

是完全相同的数字,因此它们在内存中的表示方式相同。无法区分它们。
因此,无法知道是否已分配 num2 值0.01来编写具有零个,一个,两个或更多尾随零的数字。

如果要按照编写方式存储十进制数,则必须将其存储为字符串。

答案 1 :(得分:2)

javascript中的数字没有尾随零 - 如果可以的话,你会在哪里停下来? 这是正常的行为。 如果返回字符串 -

,可以强制它们出现
var n= '0.0'
alert(n)>> 0
alert(n.toFixed(5))>> '0.00000'
alert(n.toPrecision(5))>>'0.0000'