我正在使用eval将字符串小数转换为小数。
eval("000451.01");
当我使用上述语句javascript时,它会引发异常'expected;'
当使用eval("000451");
时,它会给我一个不同的结果。
任何人都有任何想法?
答案 0 :(得分:8)
您应不使用eval
来解析数字;它比正常方法慢几个数量级。
相反,您应该使用parseFloat
函数。像这样:parseFloat("000451.01")
。
您收到错误的原因是Javascript将以0
开头的数字视为八进制数,不能包含小数。
如果要解析整数,请调用parseInt
,并确保提供第二个参数10
以强制它解析基数为10的数字,否则您将遇到同样的问题。
答案 1 :(得分:1)
以零开头的数字被解释为八进制数。但八进制数只是整数而不是浮点数。所以试试这个:
eval("451.01")
但如果你使用parseFloat
function:
parseFloat("000451.01")
答案 2 :(得分:1)
在Javascript中,以零开头的标记是基数为8的整数文字。基数为8的000451
在基数为10中为297
,000451.01
被解析为int(297) dot int(1)
而不是单个数字文字。
删除初始零,它应该可以工作。