java吧 关注:1,216,067贴子:12,665,723
  • 20回复贴,共1

[java算法求助]一道蓝桥杯的应用题,需要过程,不能写答案。

只看楼主收藏回复

昨天老师布置了一道题,据说是 蓝桥杯的一道题。
题目:已知X的三次方等于10,求X?(X的范围在2~3,答案精确到小数点后五位)
注:eclipse的内存不能超过230m(循环次数不能太大!)
刚开始我自己用数学中的二分法,但是保留五位的精度不够,于是换了一种方法;
但是结果让我大吃一惊,明明应该是显示2.15443,但是却显示2.1544299999999996
代码如下:
class Test3 {
public static void main(String[] args) {
double a=2,c=0.1;
for (double h=1;h<=5;h++){
while((a)*(a)*(a)<10){
System.out.println(c+" "+a+" "+(a)*(a)*(a));
a=a+c;
}
a=a-c;
c=c/10;
}
}
}


IP属地:四川1楼2015-11-07 20:57回复
    0.1------2.0-------8.0
    0.1------2.1-------9.261000000000001
    0.01------2.1-------9.261000000000001
    0.01------2.11-------9.393930999999998
    0.01------2.1199999999999997-------9.528127999999995
    0.01------2.1299999999999994-------9.663596999999992
    0.01------2.1399999999999992-------9.800343999999988
    0.01------2.149999999999999-------9.938374999999986
    0.001------2.149999999999999-------9.938374999999986
    0.001------2.150999999999999-------9.952248950999984
    0.001------2.151999999999999-------9.966135807999985
    0.001------2.1529999999999987-------9.980035576999983
    0.001------2.1539999999999986-------9.99394826399998
    1.0E-4------2.1539999999999986-------9.99394826399998
    1.0E-4------2.154099999999999-------9.995340243420983
    1.0E-4------2.154199999999999-------9.996732352087985
    1.0E-4------2.154299999999999-------9.998124590006988
    1.0E-4------2.1543999999999994-------9.999516957183992
    1.0E-5------2.1543999999999994-------9.999516957183992
    1.0E-5------2.1544099999999995-------9.999656201011113
    1.0E-5------2.1544199999999996-------9.999795446130882
    1.0E-5------2.1544299999999996-------9.999934692543302


    IP属地:四川2楼2015-11-07 20:58
    回复
      单机中


      IP属地:四川3楼2015-11-07 21:00
      回复
        单机中1


        IP属地:四川4楼2015-11-07 21:07
        回复
          单机


          IP属地:四川来自Android客户端6楼2015-11-08 10:06
          回复


            IP属地:四川来自Android客户端7楼2015-11-08 10:06
            回复
              外层循环5次又不一定精确小数点5位


              IP属地:广东来自Android客户端8楼2015-11-08 10:16
              收起回复
                正常


                IP属地:湖北9楼2015-11-08 10:54
                收起回复
                  不是double型的吗


                  来自Android客户端10楼2015-11-08 15:24
                  回复
                    我记得有个方法可以避免这个精度转换问题


                    IP属地:宁夏来自Android客户端11楼2015-11-08 15:55
                    回复
                      留名


                      IP属地:上海来自手机贴吧12楼2015-11-08 19:52
                      回复
                        DecimalFormat类格式控制下,四舍五入,或者Math.round()


                        13楼2015-11-08 20:48
                        收起回复
                          浮点型在计算机内部用二进制,会有舍入误差


                          IP属地:浙江来自iPhone客户端14楼2015-11-11 02:47
                          回复
                            mathround破之


                            15楼2015-11-11 03:45
                            回复