请问各位,在java中你们是如何判断一个浮点数小于、小于等于零的?我这里假设两个数相等的误差是<0.000001。

解决方案 »

  1.   

    >,<,==
    难道还有什么特别的?
      

  2.   

    用BigDecimal的compareTo()
    System.out.println(new BigDecimal("0.39999999999999997").compareTo(new BigDecimal("0.3999999999999999769")) == 0);
    System.out.println(0.39999999999999997 == 0.3999999999999999769);
    前者输出false,后者输出true.
    虽然这里误差比你要求的小,但是用BigDecimal肯定是对的。
      

  3.   

    精度需求高的话 用BigDecimal是没错的。
      

  4.   

    为什么BigDecimal更加精确呢?底层是怎样实现的呢?哪位大侠可以指点指点?
      

  5.   

    好好看看java核心技术卷1和卷2,上面写的很有用,
      

  6.   

    允许误差还是按我前贴的,我一般在判断一个浮点数是否等于零的时候用如下的表达式:
    if ( Math.abs(var)<0.000001 ){
        System.out.println("等于零");
    }
    这样应该没什么不妥吧?
      

  7.   

    浮点数直接使用运算符进行计算或者逻辑运算符做判断都是不精确的,
    注意通过String形式(一定得这么做,不然还是没保证)转换成BigDecimal来处理喵~~``
      

  8.   

    这个数字本身就是小于零的话,用自己减去abs一下看看是否小于零