首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么(int) Math.random()*10在Java语言中不能生成10?

为什么(int) Math.random()*10在Java语言中不能生成10?
EN

Stack Overflow用户
提问于 2010-06-22 17:53:25
回答 8查看 37.1K关注 0票数 6

为什么下面的结果在0-9之间而不是10之间?

我的理解是Math.random()创建介于0到1.0之间的数字。

所以它可以产生0.99987,10乘以10,不是吗?

代码语言:javascript
复制
int targetNumber = (int) (Math.random()* 10);
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2010-06-22 17:56:59

在Java语言中,将double转换为int会进行整数截断。这意味着如果你的随机数是0.99987,那么乘以10会得到9.9987,整数截断会得到9。

票数 19
EN

Stack Overflow用户

发布于 2010-06-22 17:57:43

在Math javadoc中:

“大于或等于0.0且小于1.0的伪随机双精度数”

对于Math.random,1.0不是一个可能的值。所以你不能得到10,而(int) 9.999等于9

票数 14
EN

Stack Overflow用户

发布于 2010-06-22 17:55:41

原因(Math.random()* 10使用int()进行四舍五入,因此int(9.9999999)生成9

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3091998

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档