为什么下面的结果在0-9之间而不是10之间?
我的理解是Math.random()创建介于0到1.0之间的数字。
所以它可以产生0.99987,10乘以10,不是吗?
int targetNumber = (int) (Math.random()* 10);发布于 2010-06-22 17:56:59
在Java语言中,将double转换为int会进行整数截断。这意味着如果你的随机数是0.99987,那么乘以10会得到9.9987,整数截断会得到9。
发布于 2010-06-22 17:57:43
在Math javadoc中:
“大于或等于0.0且小于1.0的伪随机双精度数”
对于Math.random,1.0不是一个可能的值。所以你不能得到10,而(int) 9.999等于9
发布于 2010-06-22 17:55:41
原因(Math.random()* 10使用int()进行四舍五入,因此int(9.9999999)生成9。
https://stackoverflow.com/questions/3091998
复制相似问题