我在Chrome控制台和IE11中测试过它。
parseFloat(27) => 27
parseFloat('27') => 27
parseFloat('027') => 27
但
parseFloat(027) => 23
parseFloat(0027) => 23
我猜是将它理解为八进制,但我没有找到任何对here的引用
由于我使用它来保护一个用户输入的数字,我如何确定即使使用前面的0它也会被作为浮点数处理?
答案 0 :(得分:4)
“027
”是您在源代码中指定27个八进制的方式。由于您不打算让用户输入您的源代码,因此您无需做任何特别的事情。
答案 1 :(得分:3)
parseFloat
不理解八进制:
> parseFloat('027')
27
问题是你要给它一个数字,而不是一个字符串。 027
是一个八进制数字文字,其求值为23
; parseFloat
不知道它看起来像027
。只要确保将字符串传递给函数,就不应该有任何八进制问题。
答案 2 :(得分:1)
为什么parseFloat(027)等于23
parseFloat()
的参数是一个字符串值,因此对任何不是字符串的内容执行强制转换; 0x20
或027
等文字数字首先归一化为十进制。
这意味着parseFloat(027)
实际上是parseFloat('23')
。
我怎样才能确定即使使用前面的0,它也会被当作浮动处理?
通过确保传递给parseFloat()
的值是一个字符串值,因为前导零在parseFloat()
(和parseInt()
的基数为10)中没有特殊含义。
答案 3 :(得分:0)
它将输入解释为八进制。见here。如果在“八进制”字段中输入“027”,则会在“十进制”字段中看到“23”输出。