当在字符串上下文中使用时,JavaScript将超过21位的整数转换为科学符号。我打印了一个整数作为URL的一部分。我怎样才能阻止这种转变的发生?
当前回答
还有一个可能的解决方案:
function toFix(i){
var str='';
do{
let a = i%10;
i=Math.trunc(i/10);
str = a+str;
}while(i>0)
return str;
}
其他回答
你可以使用number.toString(10.1):
console.log(Number.MAX_VALUE.toString(10.1));
注意:这目前适用于Chrome,但不适用于Firefox。规范规定基数必须是整数,所以这会导致不可靠的行为。
function printInt(n) { return n.toPrecision(100).replace(/\..*/,""); }
有一些问题:
0.9显示为“0” -0.9显示为"-0" 1e100显示为“1” 仅适用于~1e99 =>以下的数字,对于更大的数字使用其他常数;或者更小的优化。
对于较小的数字,并且您知道需要多少小数,您可以使用toFixed,然后使用regexp删除后面的零。
Number(1e-7).toFixed(8).replace(/\.?0+$/,"") //0.000
使用。toprecprecision, . tofixed等。您可以通过将数字转换为. tostring的字符串,然后查看其.length来计算数字中的位数。
如果您只是为了显示而这样做,您可以从四舍五入之前的数字构建一个数组。
var num = Math.pow(2, 100);
var reconstruct = [];
while(num > 0) {
reconstruct.unshift(num % 10);
num = Math.floor(num / 10);
}
console.log(reconstruct.join(''));