将非常接近 1 的浮点数与 int > 0 相乘时,是否可以将其解释为 1。
也就是说,如果 Math.random() 返回其可能的最高结果(比 1.0 低 1 步),将
(int)(Math.random() * 8)
是 8 还是 7?
举个实际的例子,这个经常使用的构造能否给出索引越界错误:
someArray[(int)(Math.random() * someArray.length)];
我对 Java 和 ActionScript 3 的答案特别感兴趣,但我想它们都使用相同的浮点运算规则,并且任何平台的答案都会很有用。
更新:虽然我已经接受了一个答案,但我仍然希望确认这在 ActionScript 3 中也不会出错,因为一位同事报告说他曾经看到它出错是部分促使我提出这个问题的原因。