我很有兴趣了解032*2
为什么在JavaScript中返回52
。
我觉得032
可以作为octal notation
进行互操作,但我找不到合适的参考资料。
你可以请:
先谢谢你的帮助。
答案 0 :(得分:5)
0
开始的 Numbers是 Octal 。所以,032 === 26
。
要将其转换为Base-10 / 十进制号,请使用{{3>} radix 10。
parseInt('032', 10) * 2; // 64
来自MDN文档:
如果radix未定义或0(或不存在),则JavaScript假定以下内容:
答案 1 :(得分:2)
没有基数的八进制解释
尽管ECMAScript 3气馁并且ECMAScript 5禁止, 许多实现将以前导0开头的数字字符串解释为八进制。以下可能有八进制结果,或者可能有十进制结果。
始终指定一个基数以避免这种不可靠的行为。
来源:https://developer.mozilla.org/de/docs/Web/JavaScript/Reference/Global_Objects/parseInt
答案 2 :(得分:2)
ECMAScript 5.1指定了对数字文字in its annex的一些扩展:
7.8.3 [数字文字]的语法和语义可以扩展如下,除了严格模式代码不允许使用此扩展名:
NumericLiteral :: DecimalLiteral HexIntegerLiteral OctalIntegerLiteral OctalIntegerLiteral :: 0 OctalDigit OctalIntegerLiteral OctalDigit
结论是,任何以0
开头且后跟OctalDigit
的数字都可以视为八进制数。但是,在严格模式下,这是不。