欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2022-07-15 13:06:44
...

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

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

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

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类型数据保留指定位数方法总结