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

運行結果

運行結果

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章