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

    }

     
  • 相关阅读:
    c# 类名不同,字段相同,如何快速给类赋值
    .net 中 Json 与List 相互转
    echarts Hello world 入门
    Could not load file or assembly 'Oracle.ManagedDataAccessDTC.DLL' or one of its dependencies.
    省厅报件7.0 读取mdb 生成xml 文件
    【0 基础学Dojo】第【1】篇 HelloWord
    UnicodeEncodeError: 'gbk' codec can't encode character 'xa0' in position 9865: illegal multibyte sequence 解决办法
    算法的稳定性(Stability of Sorting Algorithms)
    选择排序(Selection Sort)
    快速排序(Quick Sort)
  • 原文地址:https://www.cnblogs.com/lxn0216/p/7843619.html
Copyright © 2011-2022 走看看