看看这个网站上的问题并且找不到我正在寻找的关于将Math.random()
方法从double转换为int的类型的答案。
我的问题是,为什么Math.random
只返回没有括号的0,而当它包含在括号中时它会返回随机数?
代码的第一部分返回0:
int number;
number = (int) Math.random() * 10;
System.out.println("\nThe random number is " + number);
但是这段代码有效:
int number;
number = (int) (Math.random() * 10);
System.out.println("\nThe random number is " + number);
应该注意到我在类型转换上看到了一些不同的代码,一些程序员似乎都使用这两种方式进行转换。
答案 0 :(得分:6)
此代码:
number = (int) Math.random() * 10;
首先计算:
(int) Math.random()
由于Math.random()
返回的数字从0到1但不包括1,如果将其转换为int,它将向下舍入为0.然后,当您将10乘以0时,得到0。
答案 1 :(得分:1)
Math.random()返回一个从0到1的数字。您希望将(Math.random()* 10)的结果转换为int,而不是从Math.random本身获得的数字。 数字向下舍入。因此,例如,您可以从Math.random获得的0.3,舍入为0.再次,您希望将结果舍入0.3倍10,即3。括号很重要。