Javascript – 将数字转换为将数字转换为某个不同数字的数字。 不明白为什么会发生这种情况?
某个数字的前导零,将数字转换为某种未知数字格式。 例如 :
017
正在转换为15
037
正在转换为31
还发现最终具有8 0r 9的数字保持相同,例如:
018
是18
038
是38
o59
是59
我发现的另一件事是
对于每个下一个10的范围,转换值和实际值之间的差值增加2
例如 :
对于范围00-09
差异为0
即07的值为7,04为4
对于范围010-019
差异是2
值017将是010-019
将是11
对于范围020-029
差异是4
值027将是020-029
将是17
等等..
这是一个测试的snipet http://jsfiddle.net/rajubera/BxQHF/
我不知道为什么会这样?
请帮助我如何从前导零的数字中获取正确的十进制数?
如果有一个前导0,它将它转换为八进制(基数为8),只要它是基数为8的有效数字(没有大于7的数字)。
例如:
基数8中的017
是1 * 8 + 7 = 15 037
,基数8是3 * 8 + 7 = 31
018
被转换为18
因为018
不是基数8中的有效数字
请注意,默认情况下,数字转换为哪个基数的行为可以是特定于浏览器的,因此在使用parseInt
时始终指定基数/基数很重要:
parseInt("017",10) === 17
根据评论更新:
parseInt
期望一个string
作为第一个参数,所以
parseInt("012",10) === 12
"use strict";
的原因之一"use strict";
(function() {"use strict"; 017})() // Firefox => SyntaxError: "0"-prefixed octal literals and octal escape sequences are deprecated; for octal literals use the \"0o\" prefix instead // Chrome, Node => SyntaxError: Octal literals are not allowed in strict mode.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Errors/Deprecated_octal