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));
    }

    }

     
  • 相关阅读:
    part of Hypertext Transfer Protocol HTTP/1.1
    Run Windows Service as a console program
    UNION 和UNION ALL 的区别
    分布式拒绝服务攻击(DDoS)原理及防范
    执行存储过程超时 SQL
    sql 小技巧 =》本周五和上周四的时间
    OPENXML with xmlns:dt
    Comparing the Timer Classes in the .NET Framework Class Library
    图片(地图)热点区域高亮显示研究
    用YSlow分析我们页面(转)
  • 原文地址:https://www.cnblogs.com/lxn0216/p/7843619.html
Copyright © 2011-2022 走看看