怎样实现1234.5678保留2位小数,并且四舍五入,不四舍五入呢???我试过BigDecimal,但是当1234.555保留2位小数的时候不五入,超过5或者后面还有一位时才会。以下代码也是,当1234.555保留2位小数的时候也不五入。
NumberFormat nf = NumberFormat.getNumberInstance();
nf.setMaximumFractionDigits(2);
nf.setMinimumFractionDigits(2);

解决方案 »

  1.   


    public class T {

    public static void main(String args[]) {
    double str = Math.round(1234.5678f * 100)/100.00 ; System.out.println(str);
    }
    }输出结果为:
    1234.57
      

  2.   

    BigDecimal bd = new BigDecimal("1234.5648");
    double d = bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
      

  3.   


    那这种情况呢。。1234.565四舍五入应该是1234.57的,结果还是1234.56。。
    double str = Math.round(1234.565f * 100)/100.00 ;
    System.out.println(str);
      

  4.   

    请尝试下以下代码import java.math.BigDecimal;
    import java.math.RoundingMode;import org.apache.log4j.Logger;public class Type {
    private static Logger logger = Logger.getLogger(Type.class.getName()); /**
     * @param args
     */
    public static void main(String[] args) {
    BigDecimal bigDecimal = new BigDecimal(1234.5678);
    //四舍五入
    System.out.println(bigDecimal.setScale(2, RoundingMode.HALF_UP).doubleValue());
    //直接去尾
    System.out.println(bigDecimal.setScale(2, RoundingMode.DOWN).doubleValue());
    }
    }
      

  5.   


    public class T {

    public static void main(String args[]) {
    double str = Math.round(1234.5678 * 100)/100.00 ;
    System.out.println(str);

    BigDecimal bd = new BigDecimal("1234.565");
    double d = bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
    System.out.println(d);
    }
    }