天行健,君子以自强不息;地势坤,君子以厚德载物。
每个人都有惰性,但不断学习是好好生活的根本,共勉!
文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。
三种方式保留两位小数的方法
此方法可以设置保留位数和保留的规则
得到的同样是一个BigDecimal类型的值
Double d = 123.12345;
BigDecimal bd = new BigDecimal(d);
//调用函数 参数2表示保留两位小数,ROUND_HALF_UP表示四舍五入
//bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
BigDecimal bd1 = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
System.out.println("bd1: "+bd1);
此方法使用匹配规则
得到的是一个字符串类型的值
Double d = 123.12345;
BigDecimal bd = new BigDecimal(d);
DecimalFormat df = new DecimalFormat("#0.00");
//输出结果为123.12
System.out.println(df.format(bd));
此方法是字符串自带的放法
得到的是一个字符串类型的值
Double d = 123.12345;
BigDecimal bd = new BigDecimal(d);
String str2 = String.format("%.2f",bd);
System.out.println("str2: "+str2);
以上直接食用
分割线-----------------------------------------------------------------------------------------------------------------
以下是拓展
package com.data.controller;
import java.math.BigDecimal;
import java.text.DecimalFormat;
/**
* @Description: BigDecimal保留两位小数测试
* @Version 1.0
* @Author 李白
* @Date 2023/7/14 星期五 9:47
*/
public class BigDecimalTest {
public static void main(String[] args) {
//setScale
// Double d = 123.12345;
// BigDecimal bd = new BigDecimal(d);
// //调用函数 参数2表示保留两位小数,ROUND_HALF_UP表示四舍五入
// //bd = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
// BigDecimal bd1 = bd.setScale(2, BigDecimal.ROUND_HALF_UP);
// System.out.println("bd1: "+bd1);
//DecimalFormat
// Double d = 123.12345;
// BigDecimal bd = new BigDecimal(d);
// DecimalFormat df = new DecimalFormat("#0.00");
// //输出结果为123.12
// System.out.println(df.format(bd));
//String.Format
// Double d = 123.12345;
// BigDecimal bd = new BigDecimal(d);
// String str2 = String.format("%.2f",bd);
// System.out.println("str2: "+str2);
//整数位为0
BigDecimal bdt1 = new BigDecimal(0.0);
BigDecimal bdt2 = new BigDecimal(0.1);
BigDecimal bdt3 = new BigDecimal(0.10);
BigDecimal bdt4 = new BigDecimal(0.01);
BigDecimal bdt5 = new BigDecimal(0.001);
BigDecimal bdt6 = new BigDecimal(0.100);
//整数位为一位整数
BigDecimal bdt7 = new BigDecimal(1.0);
BigDecimal bdt8 = new BigDecimal(1.1);
BigDecimal bdt9 = new BigDecimal(1.00);
BigDecimal bdt10 = new BigDecimal(1.10);
BigDecimal bdt11 = new BigDecimal(1.01);
BigDecimal bdt12 = new BigDecimal(1.001);
BigDecimal bdt13 = new BigDecimal(1.100);
//整数位为两位整数
BigDecimal bdt14 = new BigDecimal(10.001);
//整数位为三位整数
BigDecimal bdt15 = new BigDecimal(101.001);
//规则一 在整数位和小数位都满足两位或者以上的时候不受影响,当整数位或小数位少于两位时会自动填充为0
String dp1 = "00.00";
//规则二 是满足所有条件的保留两位小数规则,当小数位不满两位会自动填充为0,当整数位不满两位不会填充
String dp2 = "#0.00";
//规则三 在整数位不满两位时不会自动填充,当小数位不满两位时也不会填充,且在小数位前两位都为0的情况下会将小数点和小数位都剔除,当小数位前一位不为0后一位为0则只会保留一位不为0的小数
String dp3 = "##.00";
//规则四 整数位为一位且为0则缺失,小数位保留两位,不足两位会自动填充
String dp4 = "##.##";
DecimalFormat df1 = new DecimalFormat(dp1);
DecimalFormat df2 = new DecimalFormat(dp2);
DecimalFormat df3 = new DecimalFormat(dp3);
DecimalFormat df4 = new DecimalFormat(dp4);
//保留两位小数
System.out.println("-------------------00.00--------------------");
System.out.println(df1.format(bdt1));
System.out.println(df1.format(bdt2));
System.out.println(df1.format(bdt3));
System.out.println(df1.format(bdt4));
System.out.println(df1.format(bdt5));
System.out.println(df1.format(bdt6));
System.out.println(df1.format(bdt7));
System.out.println(df1.format(bdt8));
System.out.println(df1.format(bdt9));
System.out.println(df1.format(bdt10));
System.out.println(df1.format(bdt11));
System.out.println(df1.format(bdt12));
System.out.println(df1.format(bdt13));
System.out.println(df1.format(bdt14));
System.out.println(df1.format(bdt15));
System.out.println("-------------------#0.00--------------------");
System.out.println(df2.format(bdt1));
System.out.println(df2.format(bdt2));
System.out.println(df2.format(bdt3));
System.out.println(df2.format(bdt4));
System.out.println(df2.format(bdt5));
System.out.println(df2.format(bdt6));
System.out.println(df2.format(bdt7));
System.out.println(df2.format(bdt8));
System.out.println(df2.format(bdt9));
System.out.println(df2.format(bdt10));
System.out.println(df2.format(bdt11));
System.out.println(df2.format(bdt12));
System.out.println(df2.format(bdt13));
System.out.println(df2.format(bdt14));
System.out.println(df2.format(bdt15));
System.out.println("-------------------##.00--------------------");
System.out.println(df3.format(bdt1));
System.out.println(df3.format(bdt2));
System.out.println(df3.format(bdt3));
System.out.println(df3.format(bdt4));
System.out.println(df3.format(bdt5));
System.out.println(df3.format(bdt6));
System.out.println(df3.format(bdt7));
System.out.println(df3.format(bdt8));
System.out.println(df3.format(bdt9));
System.out.println(df3.format(bdt10));
System.out.println(df3.format(bdt11));
System.out.println(df3.format(bdt12));
System.out.println(df3.format(bdt13));
System.out.println(df3.format(bdt14));
System.out.println(df3.format(bdt15));
System.out.println("-------------------##.##--------------------");
System.out.println(df4.format(bdt1));
System.out.println(df4.format(bdt2));
System.out.println(df4.format(bdt3));
System.out.println(df4.format(bdt4));
System.out.println(df4.format(bdt5));
System.out.println(df4.format(bdt6));
System.out.println(df4.format(bdt7));
System.out.println(df4.format(bdt8));
System.out.println(df4.format(bdt9));
System.out.println(df4.format(bdt10));
System.out.println(df4.format(bdt11));
System.out.println(df4.format(bdt12));
System.out.println(df4.format(bdt13));
System.out.println(df4.format(bdt14));
System.out.println(df4.format(bdt15));
System.out.println("---------------------------------------");
}
}
-------------------00.00--------------------
00.00
00.10
00.10
00.01
00.00
00.10
01.00
01.10
01.00
01.10
01.01
01.00
01.10
10.00
101.00
-------------------#0.00--------------------
0.00
0.10
0.10
0.01
0.00
0.10
1.00
1.10
1.00
1.10
1.01
1.00
1.10
10.00
101.00
-------------------##.00--------------------
.00
.10
.10
.01
.00
.10
1.00
1.10
1.00
1.10
1.01
1.00
1.10
10.00
101.00
-------------------##.##--------------------
0
0.1
0.1
0.01
0
0.1
1
1.1
1
1.1
1.01
1
1.1
10
101
---------------------------------------
Process finished with exit code 0
对比打印结果可知
第一种00.00在整数位和小数位都满足两位或者以上的时候不受影响,当整数位或小数位少于两位时会自动填充为0
第二种#0.00是满足所有条件的保留两位小数规则,当小数位不满两位会自动填充为0,当整数位不满两位不会填充
第三种##.00整数位为一位且为0则缺失,小数位保留两位,不足两位会自动填充
第四种##.##在整数位不满两位时不会自动填充,当小数位不满两位时也不会填充,且在小数位前两位都为0的情况下会将小数点和小数位都剔除,当小数位前一位不为0后一位为0则只会保留一位不为0的小数
综上,保留两位小数时最好用的是#0.00