Java 保留2位小数点(2种方式)

来源:互联网 发布:江南七怪 知乎 编辑:程序博客网 时间:2024/06/07 05:14

今天群里有人在处理小数点方面出了点问题,趁机回顾下保留小数点的方式,这里介绍2种,利用BigDecimal类及DecimalFormat类。

package com.huayu.java91up;import java.math.BigDecimal;import java.text.DecimalFormat;/** * Create by zxb on 2017/4/17 */public class Test {    public static void main(String[] args) {        System.out.println("use bigdecimal...");        BigDecimal num1 = new BigDecimal("11.015").setScale(2, BigDecimal.ROUND_HALF_UP);        BigDecimal num2 = new BigDecimal("11.004").setScale(2, BigDecimal.ROUND_HALF_UP);        BigDecimal num3 = new BigDecimal("11.006").setScale(2, BigDecimal.ROUND_HALF_UP);        BigDecimal num4 = new BigDecimal("11.1").setScale(2, BigDecimal.ROUND_HALF_UP);        System.out.println(num1);  // 11.02        System.out.println(num2);  // 11.00        System.out.println(num3);  // 11.01        System.out.println(num4);  // 11.10        System.out.println("use formatter...");        DecimalFormat df = new DecimalFormat("0.00");        System.out.println(df.format(new Double("11.015")));        System.out.println(df.format(new Double("11.004")));        System.out.println(df.format(new Double("11.006")));        System.out.println(df.format(new Double("11.1")));    }}
执行结果:



同时,关于HALFDOWNHALFUP的区别,看下API注释





从上面对比得知,两者的区别就是在处理小数点为5的情况不同。HALFUP会向上进位,HALFDOWN是向下保留。

补充一点:DecimalFormat中,#表示没有则为空,0表示如果没有则该位补0,比如0.07,用#.00,就会是".07",用0.00,会是"0.07"。

0 0