我想做从map取出来的数小于0时的判断
代码如下 (必须用BigDecimal)
(BigDecimal) map.get("LSZ_TEHAI_ZANSUU") > 0
该如何修正?

解决方案 »

  1.   

    ((BigDecimal) map.get("LSZ_TEHAI_ZANSUU")).signum() == -1 
    signum返回 的是 -1, 0, 1,分别表示 负数、零、正数
      

  2.   

    BigDecimal b = (BigDecimal) map.get("LSZ_TEHAI_ZANSUU");
    if(b.intValue()>0)
    {
       System.out.println(b);
    }
      

  3.   

    BigDecimal b = (BigDecimal) map.get("LSZ_TEHAI_ZANSUU"); 
    if(b.intValue()>0) 

       System.out.println(b); 
    }这个写法是错误的,因为你没有考虑到整数越界问题!
    System.out.println(new BigDecimal("12345678901234567890").intValue());
    输出的是-350287150
      

  4.   

    1楼OK!!public int compareTo(BigDecimal val)当此 BigDecimal 在数字上小于、等于或大于 val 时,返回 -1、0 或 1。((BigDecimal) map.get("LSZ_TEHAI_ZANSUU")).compareTo(BigDecimal.ZERO)
      

  5.   

    money.signum()==-1这样写可以吗???