如何防止数字使用数字1和#34;"数字2

时间:2014-12-23 03:06:26

标签: javascript integer

我需要帮助,因为如果我尝试编写一个包含一大堆零的数字,它将会显示为num1Enum2。

ie:对于一个googol,它会写" 1E100"。

我希望它实际写出数字,而不是缩短的形式。我该怎么做?

注意:我希望它仍然是整数而不是字符串。

2 个答案:

答案 0 :(得分:0)

您可以尝试使用大量处理库,例如big.js。否则,你唯一的解决方案是将你的大数字拆分成数组并编写你自己的数学函数来操作它们 - 类似于这个函数将数组视为一个整数并增加它:

var longVal=[0];

// inherits global array longVal[]
// increments each element from right to left
function inc() {
    for (var i=longVal.length - 1; i>=0; i--) {
        if (++longVal[i] == 10) {
            longVal[i] = 0;
            if (!i) {
                longVal.splice(0, 0, 0);
                i++;
            }
            continue;
        }
        else break;
    }
}

我认为如果超过数组的长度限制,你可能会将if (++longVal[i] == 10)行更改为类似if (++longval[i] == 1000000000)的内容以获得良好的正义,但你必须在每个数组元素之外留下填充除外第一个用零来使其成为十位数。我没有测试过。我的答案是概念,而不是实施。

答案 1 :(得分:0)

如果你“写出”一个数字,你会得到一个字符串。期。 “写出”意味着输出表示数字的字符序列。但这就是一个字符串:一系列字符。

像1E100这样的数字太大而不能表示为正常大小的整数,即使在内部也是如此。要获得一个大整数的值,你将不得不使用某种类来表示大整数。搜索一个。有几个,名称如“BigInt”,“BigInteger”,“BigNumber”,“LongDecimal”等。它们都应该能够存储内部任意大的整数值,并且都应该提供一种方法将该值转换为字符串,然后您可以写出来。选一个你喜欢的。