为什么JAVA程序给出了错误的答案?

时间:2017-03-13 08:12:31

标签: java

我最近经历了以下问题:

  

执行此代码行后d的值是多少?

double d = Math.round ( 2.5 + Math.random() );

这个问题的答案如何等于3?

4 个答案:

答案 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。