输入Casting Math.random?

时间:2014-07-12 03:15:11

标签: java random type-conversion parentheses

看看这个网站上的问题并且找不到我正在寻找的关于将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);

应该注意到我在类型转换上看到了一些不同的代码,一些程序员似乎都使用这两种方式进行转换。

2 个答案:

答案 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。括号很重要。