你如何让 Javascript 显示非常大的数字?
Posted
技术标签:
【中文标题】你如何让 Javascript 显示非常大的数字?【英文标题】:How do you make Javascript display very large numbers? 【发布时间】:2014-01-06 10:53:52 【问题描述】:我制作了一个脚本,它生成一个介于 1 和一个 googol 之间的数字(这是一个由 1 和一百个零组成的数字),但它无法以探测方式显示这些数字。它产生像“7.463677302002907e+99”这样的数字,这不是我想要的。我对 javascript 很陌生,但我设法做到了。 代码如下:
<html>
<body>
<title>Random number between 1 an a googol-generator</title>
<p id="demo">Click the button to display a random number between 1 and a googol.</p>
<button onclick="myFunction()">Generate</button>
<script>
function myFunction()
var x=document.getElementById("demo")
x.innerHTML=Math.floor((Math.random()*10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000)+1);
</script>
</body>
</html>
【问题讨论】:
您的生成器不会生成真正的随机 googol 数字。由于浮点数的小数点有限,Math.random() 不会返回由 100 位组成的十进制数。 生成一个1到100之间的随机数,然后生成那么多的随机数,串在一起不是更有用吗?或者你真的想使用那个数字来做任何事情,因为那样你就需要一些大整数库,参见例如***.com/questions/3072307/… JavaScript 的数字使用double-precision floating-point 格式,其精度只有 15 到 17 位小数。如果您确实完整地写出该数字,则其中大部分将是零。 对于 chrome,您可以使用 toLocaleString 打印数字,jsfiddle.net/rooseve/CKD52,如您所见,random 不适用于非常大的数字,总是很多零.. 【参考方案1】:Javascript 无法处理这么大的数字。它可以处理这么大的数字,但不能处理这么精确的数字。
Javascript 中的数字是浮点数,精度约为 15 位。如果你创建一个接近 googol 的随机数,它的开头只有 15 个数字,然后最多有 85 个零。
要创建这么大的数字,您需要制作几个随机数并将这些数字放在一起以形成一个大数。示例:
var s = '';
for (var i = 0; i < 10; i++)
s += Math.floor(Math.random() * 1e10);
while (s.length > 1 && s[0] == '0') s = s.substr(1);
演示:http://jsfiddle.net/Guffa/YxJ3U/
【讨论】:
以上是关于你如何让 Javascript 显示非常大的数字?的主要内容,如果未能解决你的问题,请参考以下文章