当乘以一个浮点数,这是非常接近1与一个int> 0,可以将其永远被解释为1.可以将0.99999999999乘以四舍五入为1.0吗?
也就是说,如果Math.random()
返回其可能的最高结果(这是步骤1低于1.0) ,
(int)(Math.random() * 8)
是8还是7?
对于一个实际的例子,可以在此经常使用的结构给出一个索引越界的错误:
someArray[(int)(Math.random() * someArray.length)];
我在为Java和ActionScript 3的答案特别感兴趣,但我想他们都使用浮点算法的相同规则以及任何平台的答案都是有用的。
更新:虽然我已经接受了一个答案,但我仍然希望确认这在ActionScript 3中也不会出错,因为一个同事报告他看到它出错一次是什么部分促使我问这个问题。
我会很惊讶,如果这样一些*从未*溢出到下一个INT ......但我会等待更好的回答... – bdares
@UdoFholl我不打算使用任何官方的数学符号,只是想表明一个数字有很多很多的九。 –
*当乘以一个非常接近1的浮点数时,是否可以解释为1 * - 是的,如果您乘以0 ;-) JK – aioobe