java.text.NumberFormat保留小数点

一、概述

NumberFormat是抽象类,可以通过其本身提供的getxxxInstance()静态方法获得实例对象。
getxxxInstance()本质是创建了一个DecimalFormat对象,该对象默认使用的是进位方式是RoundingMode.HALF_EVEN,此舍入模式也称为“银行家算法”,主要在美国使用。
银行家算法:四舍六入五考虑,五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一

二、demo

import java.text.NumberFormat;

public class Test1 {
    public static void main(String[] s){
        double number = 12345.67321;

        NumberFormat numberFormat = NumberFormat.getCurrencyInstance();
        System.out.println(numberFormat.format(number));//¥12,345.67 货币格式的实例化对象,若没有设置小数点允许最大位数,默认是2位

        numberFormat.setMaximumFractionDigits(4); //设置小数点允许最大位数4位,超出部分按RoundingMode.HALF_EVEN模式进位
        System.out.println(numberFormat.format(number));//¥12,345.6732
 
        numberFormat.setRoundingMode(RoundingMode.HALF_UP); //设置进位方式为四舍五入
        System.out.println(numberFormat.format(number));//¥12,345.6732

        NumberFormat numberFormat1 = NumberFormat.getInstance();
        System.out.println(numberFormat1.format(number));//12,345.673  数字格式的实例化对象,若没有设置小数点允许最大位数,默认是3位

        numberFormat1.setMinimumIntegerDigits(6);//设置整数部分最小允许为6位,不足左补0,
        System.out.println(numberFormat1.format(number));// 012,345.673

        numberFormat1.setMaximumIntegerDigits(3);//设置整数部分最大允许为3位,超出部分截取掉
        System.out.println(numberFormat1.format(number));// 345.673

        //getxxxInstance()本质是创建了一个DecimalFormat对象,该对象默认使用的是进位方式是RoundingMode.HALF_EVEN,此舍入模式也称为“银行家算法”,主要在美国使用。
        //银行家算法:四舍六入五考虑,五后非零就进一,五后为零看奇偶,五前为偶应舍去,五前为奇要进一
        NumberFormat numberFormat2 = NumberFormat.getIntegerInstance();
        System.out.println(numberFormat2.format(number));//12,346  此处有四舍六入的问题
    }
}

简单示例:

public static void main(String[] args) throws Exception {
        java.text.NumberFormat nf = java.text.NumberFormat.getInstance();
        nf.setGroupingUsed(false);
        nf.setMaximumFractionDigits(2);
        double d = (double) 1 * 100 / 3;
        d = Double.parseDouble(nf.format(d));
        log.info("d => {}", d);

        int i = 1 * 100/3;
        log.info("i => {}", i);
}

 

posted @ 2025-07-02 09:50  都是城市惹的祸  阅读(7)  评论(0)    收藏  举报