Math.random()的精度

时间:2010-07-27 14:05:35

标签: javascript random

JavaScript Math.random()函数的精度是多少?

3 个答案:

答案 0 :(得分:9)

Math.random()生成一个16位小数的浮点数,大于或等于零且小于1。

答案 1 :(得分:7)

它取决于浏览器/ JavaScript引擎。

最大可能的精度是52位,因为Math.random返回0(包括)和1(不包括)之间的双精度浮点。这个最大值大约相当于16位小数,见Sly1024的答案。

实际上,许多浏览器的精度较低。这似乎是目前的状态:

多次运行以下代码,您将看到Chrome和Safari中的尾随21位始终为0。

console.log((Math.random() * Math.pow(2,53)).toString(2));

答案 2 :(得分:3)

根据维基百科:Double-precision floating-point format 小数部分是52位,我们知道数字将介于0和1之间(我认为不包括1),因此指数为-1,这使我们得到52个随机位。

52个随机位给出52位精度,其在10的基数约为

52*log10(2) ~= 15.653559774527022151114422525674 digits.