Javascript变量不显示分配给它的数字

Cap*_*ung 0 javascript numbers

我正在编写一个需要随机10位数字的javascript程序,有时可以将第10位数字设为0.我为这些数字中的一个分配了一个变量然后记录它以确保一切正常...但它不是'吨.这是我的代码:

var candidate = 0135740250;
var candidate2 = 0272189318;
console.log(candidate); // Returns 24625320
console.log(candidate2); // Returns 272189318
Run Code Online (Sandbox Code Playgroud)

我尝试0在开始时取消candidate,这使它正确返回,但我不明白为什么它首先不起作用.我candidate2上面提到的是因为无论我做什么,0在中间添加s,以其他方式更改它,它保持正确,所以我无法弄清楚为什么candidate被搞砸了.我模糊地理解Javascript中的数字存储系统并且它并不完美,但我需要一种可预测的,可重复的方式来返回正确的数字.

问题是:这里发生了什么以及如何可靠地避免它?

coo*_*ter 5

"问题是:这里发生了什么......"

第一个是有效的八进制,因此它会被转换.

第二个不是有效的八进制因为89,所以它获得了前导0删除的基数10表示,因为它没有添加任何值.


"......我怎样才能可靠地避开它?"

避免它取决于你如何产生你的数字.如果你使用.random()它不会是一个问题,所以我认为它们来自某种字符串表示.

如果是这样,并且如果您正在使用parseInt()获取实际数字,则将其10作为第二个参数传递以确保基数为10的表示.

  • 修复它的一种方法是处于"严格"模式,因为那时不识别八进制常量(它们总是被解析为基数10). (2认同)