当将非常接近1的浮点数乘以int> 0时,它是否可以解释为1.
也就是说,如果Math.random()返回其最高可能结果(比1.0低1步),将会
(int)(Math.random() * 8)
Run Code Online (Sandbox Code Playgroud)
是8还是7?
对于一个实际的例子,这个经常使用的构造是否可以提供索引超出范围的错误:
someArray[(int)(Math.random() * someArray.length)];
Run Code Online (Sandbox Code Playgroud)
我对Java和ActionScript 3的答案特别感兴趣,但我想它们都使用相同的浮点运算规则,任何平台的答案都会很有用.
更新:虽然我已经接受了答案,但我仍然感谢确认这在ActionScript 3中也不会出错,因为一位同事报告说他看到它出错了,这部分促使我提出这个问题.
许多随机数生成器返回0到1之间的浮点数.
在a和b之间获得整数的最佳和正确方法是什么?