代码无法实现多个值

时间:2018-12-13 23:13:18

标签: java

由于某种原因,这行代码int u=(int)Math.random()*6 + 1;将仅返回1。

我发现它只是跳过整个(int)Math.random()*6,并且只使用1,因为当我将其更改为2时,它只返回2。

任何人都知道发生了什么事

2 个答案:

答案 0 :(得分:4)

Math.random()强制转换为int的操作是在乘以6之前进行的。强制转换运算符的使用地址是higher precedence而不是*

Math.random()方法返回一个介于0(包括)和1(不包括)之间的随机数,因此强制转换总是返回0

要提供适当的范围,请在强制转换前将Math.random() 乘以括号。 Math.random() * 6的范围是0(包括)到6(不包括)。

int u = (int) (Math.random()*6) + 1;

答案 1 :(得分:0)

发生了什么事

  1. Math.random()返回一个带有正号的大于等于0.0且小于1.0的双精度值。
  2. (int)Math.random()的成本是0的两倍,因为类型转换的优先级比*高。
  3. (int)Math.random()*6始终是0,您所拥有的一切。