我遇到了一个非常奇怪的问题,我的JavaScript程序。我有因为某种原因,JavaScript将040000
更改为16384
! [Example]有谁知道为什么JavaScript会这样做?为什么JavaScript输出16384而不是040000?
3
A
回答
3
,因为JavaScript认为它在OCTAL
格式
说明: -
Javascript
(最喜欢的编程语言)允许我们直接与两个octal
和hexadecimal
号工作,所有我们当我们指定一个数字时,需要用一种方法来告诉我们使用的是什么数字。为了识别octal
和hexadecimal
数字,我们在数字的前面添加了一些东西,用这些基数来表示我们正在使用哪个基数。数字前面的前导0
表示后面的数字是八进制数,而前导0x
表示十六进制数。十进制数18
因此也可以表示为022
(在octal
)和0x12
(在hexadecimal
中)。我们不在十进制数字的前面放置特殊符号,因此任何不以0
或0x
开头的数字都被假定为十进制数字。
因此,它在你的情况一样
040000(base8)=16384(base10)
7
这是因为在JS,与0
前缀数字文字被视为八(基数8)
例如
010 == 8
在您的例子040000
真的4*8*8*8*8 = 16384
因为八在每个0
右乘以8的值。
编辑:奖金 :
如果前导0是在一个字符串表示,(例如,如果它是由用户引入),并且要避免转换为八进制数,与值10
在指定基(又名基数)该parseInt
方法调用,这样
var number = parseInt("040000", 10); //number will be 40000 ;)
在最新的浏览器,基数默认为10,但不是在旧的浏览器,所以如果你想最大的兼容性也始终指定基数参数(通常10)。
干杯
相关问题
- 1. 为什么输出2,0而不是2,3?
- 2. 为什么我的2个字节(0x00 0x40)应该是64而不是16384?
- 3. printf不输出到标准输出,而是输出到函数。为什么?
- 4. 为什么Susy给出49.15254%的输出CSS而不是50%?
- 5. System.out.println(“abc”+ 3 + 2);为什么输出是abc32而不是abc5?
- 6. 为什么这段代码输出是'thread:Thread ..',而不是'runnable:Thread ..'?
- 7. 为什么对于[0]而不是-1输出为0?
- 8. 为什么file_get_contents()Javascript输出不执行?
- 9. 为什么堆栈弹出(而不是+
- 10. 关于javascript中的范围,为什么以下不输出21而是22?
- 11. 为什么此代码显示输出17而不是16?
- 12. 为什么我的输出转到cout而不是文件?
- 13. 这个程序为什么输出8589934593而不是4294967298?
- 14. 为什么输出下面的代码1而不是0?
- 15. 为什么conv2d输出(?,6,1,1)而不是(?,5,1,1)
- 16. 使用'\ n'而不是endl会影响输出,为什么?
- 17. 函数将输出nan而不是数字,为什么?
- 18. 为什么console.log输出所有记录,而不是response.end - Node.js
- 19. 为什么这个程序输出4,而不是3?
- 20. 为什么wget输出到stderr而不是stdout?
- 21. 为什么uniq -c用空格而不是\ t输出?
- 22. 如果输出使用++ x而不是x ++,那么输出是什么?
- 23. 为什么输出是yyxz?
- 24. 为什么输出是5?
- 25. 为什么是responseText输出?
- 26. 为什么这是输出?
- 27. 以下JavaScript代码的输出是什么?为什么?
- 28. 请说出为什么下面的程序的输出是JKLM?而不是MLKJ?
- 29. PHP:为什么printf(“%。2f”,0.02)输出0.024?为什么不是0.02?
- 30. 为什么输出不同?
如果你真的需要有一些填充前用零,请尝试使用字符串。 –