Javascript 变量不显示分配给它的编号



我正在编写一个需要随机 10 位数字的 JavaScript 程序,有时可以将第 10 位数字设置为 0。我为其中一个数字分配了一个变量,然后记录它以确保一切正常......但事实并非如此。这是我的代码:

var candidate = 0135740250;
var candidate2 = 0272189318;
console.log(candidate); // Returns 24625320
console.log(candidate2); // Returns 272189318

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

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

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

第一个是有效的八进制,因此它被转换为这样。

第二个不是有效的八进制,因为89,所以它得到基数 10 表示,前导0被删除,因为它不增加任何值。


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

避免它取决于您如何生成数字。如果您使用.random()则不会成为问题,因此我认为它们来自某种字符串表示形式。

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

JavaScript 会将任何以 0 开头的数字视为八进制,如果它是有效的八进制。

另一个庸医是,如果你知道要生成的字符串的长度

"use strict"
var strlent = 10
console.log(candidate2.toString().length < strlent ? "0" + 
candidate2.toString() : candidate2.toString())
>>>0272189318

最新更新