【发布时间】: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之间的随机数,然后生成那么多的随机数,串在一起不是更有用吗?或者你真的想使用那个数字来做任何事情,因为那样你就需要一些大整数库,参见例如stackoverflow.com/questions/3072307/…
-
JavaScript 的数字使用double-precision floating-point 格式,其精度只有 15 到 17 位小数。如果您确实完整地写出该数字,则其中大部分将是零。
-
对于 chrome,您可以使用 toLocaleString 打印数字,jsfiddle.net/rooseve/CKD52,如您所见,random 不适用于非常大的数字,总是很多零..
标签: javascript random generator largenumber large-data