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

时间:2014-02-17 17:29:24

标签: javascript numbers

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

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

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

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

3 个答案:

答案 0 :(得分:5)

  

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

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

由于89,第二个不是有效的八进制,因此它会删除前导0的基数为10的表示形式,因为它不会添加任何值。


  

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

避免它将取决于您如何生成数字。如果您使用的是.random(),那么这不是问题,所以我假设它们来自某种字符串表示。

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

答案 1 :(得分:3)

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

答案 2 :(得分:0)

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

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