不管用不用求绝对值都有问题。
package pool;public class DBConnectionManager {
  public static void main(String[] args) {
    double a1 = 1.0;
         double a2 = 2.2;
         double a3 = a2-a1;
         System.out.println(a3);
         //double s = 1.2345;
         //double d = 123.4325;    double s = 1.42;
    double d = 123.23;
    double o = 0;
    o = java.lang.Math.abs(d - s);
    System.out.println(o);  }
}
这是我的代码,大家运行看看问题比较大啊。结果很奇怪的。

解决方案 »

  1.   

    1.2000000000000002
    121.81
    Press any key to continue...
      

  2.   

    浮点运算本来就不精确.. 是硬件本身的问题.任何语言都不精确吧
    要精确用bigdis.. 忘怎么拼了... ------------------------------------------------------
               我们还年轻牛奶会有的奶牛也会有的 
                 可天天在 csdn 混这些会有吗 ??
      

  3.   

    浮点运算本来就不精确.. 是硬件本身的问题.任何语言都不精确吧
    要精确用bigdis.. 忘怎么拼了...double s = 1.42;
        double d = 123.23;
        double o = 0;
        o = java.lang.Math.abs(d - s);
        System.out.println(o);
    怎么它的值是正确的呢?
    而我的:
    WCZBX=1000*java.lang.Math.abs(tCoordinateX-ttCoordinateX);
    我的问题是:
    tCoordinateX、ttCoordinateX的值都是正常double型的数值
    tCoordinateX-ttCoordinateX后的值不正常了
    算出来的却出现的是与double a1 = 1.0;
             double a2 = 2.2;
             double a3 = a2-a1;
             System.out.println(a3);
    一样的结果?
      

  4.   

    修改:
    double a1 = 1.0;
    double a2 = 2.2;
    double a3 = a2-a1;
    /********************************************************************************/
    String formatString = "###.######";
    java.text.DecimalFormat decimalformat = new java.text.DecimalFormat(formatString);
    System.out.println(decimalformat.format(a3));
    /*******************************************************************************/
    试试使用decimalformat.format方法应该可以解决你的问题?可以自己设置精度;