Javascript-将零前导到一个数字,将该数字转换为其他数字。不明白为什么会这样?
将数字转换为未知数字格式的前导零。 例如:Javascript-将零前导到一个数字,将该数字转换为其他数字。不明白为什么会这样?,javascript,jquery,Javascript,Jquery,将数字转换为未知数字格式的前导零。 例如: 017正在转换为15 037正在转换为31 还发现末尾有8或9的数字保持不变 例如: 018是18 038是38 o59是59 我发现的另一件事是 对于下一个10的范围,转换值和实际值之间的差值将增加2 例如: 对于范围00-09而言,差异为0,即07的值为7,04的值为4 对于范围010-019差异2而言,017的值为15,013的值为11 对于范围020-029差异为4027的值为23,021的值为17 等等 这是一只小鹬供测试 我不明白为什么会这
017
正在转换为15
037
正在转换为31
还发现末尾有8或9的数字保持不变
例如:
018
是18
038
是38
o59
是59
我发现的另一件事是
对于下一个10的范围,转换值和实际值之间的差值将增加2
例如:
对于范围00-09
而言,差异为0
,即07的值为7,04的值为4
对于范围010-019
差异2
而言,017的值为15,013的值为11
对于范围020-029
差异为4
027的值为23,021的值为17
等等
这是一只小鹬供测试
我不明白为什么会这样
请帮助我如何从具有前导零的数字中获取正确的十进制数?如果有前导0,则它将其转换为八进制(以8为基数),只要它是以8为基数的有效数字(没有大于7的数字) 例如:
017
在基数8中为1*8+7=15
037
在基数8中为3*8+7=31
018
转换为18
,因为018
不是以8为基数的有效数字
请注意,默认情况下,数字转换为哪个基数的行为可能是特定于浏览器的,因此在使用以下命令时,务必指定基数/基数:
parseInt(“017”,10)==17
根据评论更新:
parseInt
需要一个string
作为第一个参数,所以
parseInt(“012”,10)==12
使用strict的原因之一代码>
您需要发布一些代码,以便我们能够重现问题。在我的情况下,parseInt(012,10)的可能重复和no的可能重复没有帮助。您可以检查jsfiddle链接为什么要用前导零来写数字?如果您想要十进制值,就不要这样做。如果您以字符串输入的形式获取值,
parseInt(string,10)
将起作用(但您是正确的,在八进制文字上使用parseInt
不会将其转换为十进制。修复:如果它是有效的基数8,则以8为基数,否则以10为基数。谢谢!如果它转换为八进制,则018应返回16,但018将导致18。我也这样认为。但是,我如何才能获得正确的数字??使用parseInt(yourNumber,10)获取正确的值,如果您的数字以10为基数。谢谢,但在我的情况下,parseInt(012,10)没有帮助。请检查JSFIDLE链接
(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.