Double类型数据保留指定位数方法总结

开发中经常用到数据小数点位数保留,故此总结如下,方便查阅;

Double类型数据保留指定位数方法总结

Double类型数据保留指定位数方法总结_第1张图片

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

/**
 * @program: youpin
 * @description:
 * @author: Mr.Jkx
 * @create: 2020-03-17 14:06
 */
public class JkxTest {

    public static void main(String[] args) {
        double f = 1.31415926;
        fun1(f);
        fun2(f);
        fun3(f);
        fun4(f);
        // 方法都会进行数据的四舍五入
        double f1 = 1.31615926;
        fun1(f1);
        fun2(f1);
        fun3(f1);
        fun4(f1);
    }

    /**
     * 使用精确小数BigDecimal
     */
    public static void fun1(double f) {
        BigDecimal bg = new BigDecimal(f);
        /**
         * 参数:
         * 2(newScale) - 要返回的 BigDecimal 值的标度。
         * BigDecimal.ROUND_HALF_UP(roundingMode) - 要应用的舍入模式。
         * 返回:
         * 一个 BigDecimal,其标度为指定值,其非标度值可以通过此 BigDecimal 的非标度值乘以或除以十的适当次幂来确定。
         */
        double f1 = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
        System.out.println(f1);
    }

    /**
     * DecimalFormat转换最简便
     */
    public static void fun2(double f) {
        DecimalFormat df = new DecimalFormat("#.00");
        System.out.println(df.format(f));
    }

    /**
     * @Description: String.format打印最简便
     * @Author: Mr.Jkx
     * @date: 2020/6/12 14:56
     */
    public static void fun3(double f) {
        System.out.println(String.format("%.2f", f));
    }

    /**
     * @Description: 使用NumberFormat
     * @Author: Mr.Jkx
     * @date: 2020/6/12 14:56
     */
    public static void fun4(double f) {
        NumberFormat nf = NumberFormat.getNumberInstance();
        /**
         * setMaximumFractionDigits(int newValue)
         * 设置数的小数部分所允许的最大位数。
         */
        nf.setMaximumFractionDigits(2);
        System.out.println(nf.format(f));
    }
}

运行结果

Double类型数据保留指定位数方法总结_第2张图片

你可能感兴趣的:(工具,double,保留小数点)