我最近经历了以下问题:
执行此代码行后
d
的值是多少?
double d = Math.round ( 2.5 + Math.random() );
这个问题的答案如何等于3?
答案 0 :(得分:9)
因为Math.Random()
返回0(包括)和1(不包括)之间的值,因此导致2.5到3.4999999999,无论何种类型,都会以数学方式(Math.Round()
)舍入为3.
答案 1 :(得分:4)
Math.random()返回介于0和1之间的双精度但从不返回1 ( 0 <= x <1 ) Math.round()返回与参数最接近的长整数,并将关系舍入为正无穷大。
所以2.5 + x的最近长度 0&lt; = x&lt; 1 总是3(因为你有双重类型,你的情况是3.0)
您的代码等效到
double d = Math.round(2.5);
System.out.println(d);
答案 2 :(得分:0)
Math.random()方法返回大于或等于0的数字 并且小于1.因为我们可以确定那个数字的总和 2.5将大于或等于2.5且小于3.5, 我们可以确定Math.round()会将该数字舍入为3。 所以3就是答案。
答案 3 :(得分:0)
根据官方文档,Math.Random()始终返回带有正号的double值,大于或等于0.0且小于1.0。 和Math.round(long)返回最接近参数的长整数,并将关系向上舍入。
double d = Math.round ( 2.5 + Math.random() );
因此结果总是小于3.50;所以当我们围绕这个数字时它肯定会返回3。