Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript-将零前导到一个数字,将该数字转换为其他数字。不明白为什么会这样?_Javascript_Jquery - Fatal编程技术网

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.