在调用Math类的sin方法想计算角度的三角函数,结果结果不对,一查文档才发现参数传入的是弧度,如果是通过公式来把角度转换成弧度,算出来的结果就会有偏差,例如sin 30我想让它的结果是0.5,这个应该怎么办呢?

解决方案 »

  1.   

    如果直接用Math的toRadians(double angdeg) 方法转换呢?
      

  2.   


    这个方法和用公式换算的结果一样,还是没法获得精确的值啊。
    Math.sin(Math.toRadians(30))
    结果是0.49999999999999994,而达不到0.5啊
      

  3.   


    public static double toRadians(double angdeg) {
      return angdeg / 180.0 * PI;
    }
    //toRadians是这样实现的,而 PI值如下
    public static final double PI = 3.14159265358979323846;
    //当然没法精确了,我找不到用Math能解决的方法.
      

  4.   

     double sin30 = Math.round(Math.sin(30*Math.PI/180)*100);
     System.out.println("sin30="+sin30/100);