zoukankan      html  css  js  c++  java
  • java 四舍五入 保留n为数


    double x1 = 0.026;
    String format = String.format("%.2f", x1);
    System.out.println(format);

    String format = String.format("%.nf", x1);

    n : 表示保留的位数(四舍五入)

    package com.clzhang.sample;

    import java.math.BigDecimal;
    import java.math.RoundingMode;
    import java.text.DecimalFormat;
    import java.text.NumberFormat;

    public class DoubleTest {

    /**
    * 保留两位小数,四舍五入的一个老土的方法
    * @param d
    * @return
    */
    public static double formatDouble1(double d) {
    return (double)Math.round(d*100)/100;
    }


    /**
    * The BigDecimal class provides operations for arithmetic, scale manipulation, rounding, comparison, hashing, and format conversion.
    * @param d
    * @return
    */
    public static double formatDouble2(double d) {
    // 旧方法,已经不再推荐使用
    // BigDecimal bg = new BigDecimal(d).setScale(2, BigDecimal.ROUND_HALF_UP);


    // 新方法,如果不需要四舍五入,可以使用RoundingMode.DOWN
    BigDecimal bg = new BigDecimal(d).setScale(2, RoundingMode.UP);

    return bg.doubleValue();
    }

    /**
    * NumberFormat is the abstract base class for all number formats.
    * This class provides the interface for formatting and parsing numbers.
    * @param d
    * @return
    */
    public static String formatDouble3(double d) {
    NumberFormat nf = NumberFormat.getNumberInstance();

    // 保留两位小数
    nf.setMaximumFractionDigits(2);


    // 如果不需要四舍五入,可以使用RoundingMode.DOWN
    nf.setRoundingMode(RoundingMode.UP);


    return nf.format(d);
    }


    /**
    * 这个方法挺简单的。
    * DecimalFormat is a concrete subclass of NumberFormat that formats decimal numbers.
    * @param d
    * @return
    */
    public static String formatDouble4(double d) {
    DecimalFormat df = new DecimalFormat("#.00");


    return df.format(d);
    }


    /**
    * 如果只是用于程序中的格式化数值然后输出,那么这个方法还是挺方便的。
    * 应该是这样使用:System.out.println(String.format("%.2f", d));
    * @param d
    * @return
    */
    public static String formatDouble5(double d) {
    return String.format("%.2f", d);
    }

    public static void main(String[] args) {
      double d = 12345.67890;

      System.out.println(formatDouble1(d));
      System.out.println(formatDouble2(d));
      System.out.println(formatDouble3(d));
      System.out.println(formatDouble4(d));
      System.out.println(formatDouble5(d));
    }

    }

     
  • 相关阅读:
    牛客练习赛53 A-E
    算导第二章笔记 (归并排序 之 插入排序优化)
    LightOJ 1372 (枚举 + 树状数组)
    LightOJ 1348 (树链剖分 + 线段树(树状数组))
    Light OJ 1343
    Light OJ 1266
    Light OJ 1085
    CodeForces 671C
    Codeforces Round #352 (Div. 2) (A-D)
    ZOJ1008
  • 原文地址:https://www.cnblogs.com/lxn0216/p/7843619.html
Copyright © 2011-2022 走看看