为什么以下代码仅打印25?
.nav-down
如果while(true) {
int pos = (int) (Math.random() * (26 ));
if (pos > 24)
System.out.println(pos);
}
返回从Math.random()
到0
的数字,那么上面的代码也不应该打印1
吗?
答案 0 :(得分:1)
Math.random()
返回大于或等于0.0且小于 1.0的正双。
(int)
会截断双打,也就是说 - 它会删除小数点后的所有数字,只留下整数部分 - 它不会对数字进行舍入!
因为Math.random()
永远不会是1,所以随机数乘以26将始终是lass然后是26.所以(int)
将截断25.xyz,它将删除小数点后的所有数字只留下25个。
这是你永远不会得到26的方式。