尝试在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中,该函数返回零.无论喜欢与否,这都是设计的.
解决方法有哪些?
注意:为了完整起见,我即将发布解决方案,但这是我讨厌的解决方案,所以请发布其他/更好的答案.
更新:
var x = 010;
console.log(x); //8
Run Code Online (Sandbox Code Playgroud)
JS引擎将数字x转换为八进制数.为什么会这样?我该怎样预防呢?
如果我使用代码:
string = '010';
write = eval(string);
document.write(write)
Run Code Online (Sandbox Code Playgroud)
我在页面上写了8个.为什么?即使010不是字符串,也会发生这种情况.
为什么JavaScript将parseInt(0000000101126)转换为33366而不是101126?
var example = parseInt(0000000101126);
console.log(example); //33366
Run Code Online (Sandbox Code Playgroud) 某个数字的前导零,将数字转换为某种未知数字格式.例如 :
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中添加两个数字:
var output;
output = parseInt(a)+parseInt(b);
alert(output);
Run Code Online (Sandbox Code Playgroud)
它给出了错误的output价值,例如if a = 015和b = 05.为什么会这样?上述例子的预期结果应为20.
console.log(00123 + 34351); //in javascript, outputs 34434
print(00123 + 34351); //in python, outputs 34434
Run Code Online (Sandbox Code Playgroud)
在javascript中,在python中输出34434,输出34434
然而,去除前导零,即 (123 + 34351) 给出正确答案,即 34474
var value = 05000;
var addValue = 1;
Run Code Online (Sandbox Code Playgroud)
如果我计算 value + addvalue,那么它正在计算错误的值
var result = value + addValue;// it's return value is 20481
Run Code Online (Sandbox Code Playgroud)
从快速观察结果中看到下面的图像
但是如果我将值赋予5000(在值之前没有0),那么它的计算是正确的.为什么?