ggr*_*grr 1 java random floating-point floating-accuracy
一方面,Math.random()或new Random().nextFloat()应返回介于0和1之间的值,但不包括1,另一方面,浮点数可能不准确,值可能会在实际值附近变化.是否暗示Math.random()或new Random().nextFloat()可能在实际中返回值<0或> = 1?如果没有,为什么不会发生?
不可以.文档特别保证了可能的输出范围,它指定了一个算法,该实现必须等同于:
public float nextFloat() {
return next(24) / ((float)(1 << 24));
}
Run Code Online (Sandbox Code Playgroud)
保证在半开区间[0.0,1.0]产生结果.
虽然浮点运算本身必须对其结果进行/舍入,但基本操作(如转换为浮点)具有特定的标准化舍入行为.在这种情况下,所涉及的每个浮点运算的结果都是完全可表示的,因此不会产生舍入误差.
| 归档时间: |
|
| 查看次数: |
91 次 |
| 最近记录: |