首页 > 解决方案 > n+Math.random() 是否总是小于 n+1?

问题描述

我知道 Math.random() 小于 1,但问题是,Math.random() 生成浮点数,浮点加法可能有舍入误差。

所以我的问题是,是否有任何可能的 n 值,其中 n+Math.random() < n+1 为假?

标签: javascriptfloating-point

解决方案


最大的随机结果是严格小于 1.0 的最大双精度数。向它添加一个得到的实数结果正好是 2.0 和小于 2.0 的最大双精度数之间的一半。舍入到最近会将其舍入到 2.0,因为它是平局,而 2.0 是偶数。

由于四舍五入,您需要允许 n+Math.random() < n+1 为假。


推荐阅读