double类型的d,c,角度a
d = Math.toRadians(a);
c=Math.tan(d);
求得的c有偏差,如a=45,c=0.9999999999999
求解?

解决方案 »

  1.   

    double型的精确度问题。可以编写一个方法对c进行一定精度的四舍五入处理。
      

  2.   

    double类型 4.1×4.1=16.81   4.4×4.4=19.3600000000000003  2.3×2.3=5.289999999999999
    12.34×12.34=152.2756  有些可以有些不可以,怎样处理,精确
      

  3.   

    这个属于double型的天生缺陷吧,小数用2进制来表示10进制总不能精确表示Math.tan(Math.PI/4)      它就是一个近似值,因为Math.PI无法完全精确表示,在java中也只是精确到了小数点后20位,不知道java中有没有办法来精确计算这些数学函数
      

  4.   

    我觉得得有一个接受整型值度数的三角函数才行,而不是double型的比如Math.tanForDegree(45)首先参数得精确才至少能保证结果的精确
      

  5.   

    精度问题吧。随便琢磨下,0到1有无穷个数,double无论任何精度都无法把所有数都精确表示出来。
    所以java有BigInteger类用于精度计算什么的