我需要帮助,因为如果我试图写一个有一大堆零的数字,它会变成num1Enum2。
例如:对于googol,它会写成"1E100“。
我希望它实际写出数字,而不是缩写形式。我该怎么做呢?
注意:我希望它仍然是一个整数而不是一个字符串。
发布于 2014-12-23 11:23:06
你可以尝试一个大的数字处理库,比如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)这样的代码,但除了第一个数组元素外,必须向左填充第一个数组元素才能使其变为十位数。我还没有测试过这一点。我的答案是概念,而不是实现。
发布于 2014-12-23 11:35:19
如果你“写出”一个数字,你会得到一个字符串。句号。"Writing“是指输出一系列表示数字的字符。但这就是字符串的本质:一个字符序列。
像1E100这样的数字太大了,无法表示为正常大小的整数,即使在内部也是如此。为了得到一个像整数一样大的值,你必须使用某种类型库来表示大整数。四处找找看。有几个,名字像"BigInt","BigInteger","BigNumber","LongDecimal“等等。它们都应该能够在内部存储任意大的整数值,并且都应该提供一种将该值转换为字符串的方法,然后可以将其写出来。选一个你喜欢的。
https://stackoverflow.com/questions/27613529
复制相似问题