你如何让 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 显示非常大的数字?的主要内容,如果未能解决你的问题,请参考以下文章

将非常大的数字转换为十六进制字符串

notepad++怎么让js代码高亮显示

javascript中的大数字

如何在php中将非常小的、正常的、大的、科学的数字转换为字符串

如何让mssqlreal不用科学计数法显示

如何使用递归函数(C#,D&C)避免非常大的数字的溢出乘法