尝试在JavaScript中执行以下操作:
parseInt('01'); //equals 1
parseInt('02'); //equals 2
parseInt('03'); //equals 3
parseInt('04'); //equals 4
parseInt('05'); //equals 5
parseInt('06'); //equals 6
parseInt('07'); //equals 7
parseInt('08'); //equals 0 !!
parseInt('09'); //equals 0 !!
Run Code Online (Sandbox Code Playgroud)
我刚刚学会了JavaScript认为前导零指示八进制整数的困难方式,并且由于没有"8"或"9"在base-8中,该函数返回零.无论喜欢与否,这都是设计的.
解决方法有哪些?
注意:为了完整起见,我即将发布解决方案,但这是我讨厌的解决方案,所以请发布其他/更好的答案.
更新:
我在Javascript中有一个文本框.当我进入'0000.00'文本框时,我想知道如何将其转换为只有一个前导零,例如'0.00'.
在查看parseInt(string, radix)中:https :
//developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/parseInt
13除此以外,所有示例都非常合理。
根据一个示例,parseInt(015, 10)将返回13。假设以0开头的数字被视为八进制,10这与在基数位置出现的数字无关,这是有道理的。
因此,如果在问题标题中指定了八进制:
parseInt(021, 8)
那么为什么不17(相15对于Mozilla文档和我在jsfiddle中的测试)呢?
任何见识将不胜感激。
某个数字的前导零,将数字转换为某种未知数字格式.例如 :
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将为15,013将为11
对于范围 020-029 差异, 4 值027将为23,021将为17
等等..
这是一个测试的snipet http://jsfiddle.net/rajubera/BxQHF/
我不明白为什么会发生这种情况?
请帮我如何从前导零的数字中得到正确的十进制数?
我在传递一个参数时遇到了一个麻烦的JavaScript错误,但是当它被收到时,它就完全不同了.我修好了,但想知道发生了什么事以供将来参考.
我应该作为参数传递的是'0616'(带引号).我实际通过的是0616(没有引号).
因此,当它被收到时,发生了某种隐式数字转换,它被收到为398.我理解隐式和显式转换,但是发生了什么事情将0616转变为398.领先的零似乎与某些事情有关因为我通过的其他值在最重要的数字中非零是幸存的.只有从零开始的那些?
但398和'0616'之间有什么关系?
有任何想法吗?
我很有兴趣理解为什么在JavaScript中032*2返回52.
我有一种032可以互相渗透的感觉,octal notation但我找不到适当的参考.
能否请您:
在此先感谢您的帮助.