Java基础——数据显示处理 DecimalFormat+BigDecimal

本文介绍了Java中使用DecimalFormat和BigDecimal进行数值处理的方法,包括保留两位小数、处理末尾0、添加%符号、限制最大位数、设置分组以及实现三位逗号分隔的显示方式,如123,456,789元。" 138045893,19461957,Git工作区、暂存区与本地仓解析,"['git', '版本控制']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1、保留两位小数,末尾是0仍然显示,不足补0

	DecimalFormat df1 = new DecimalFormat("0.00");
	System.out.println(df1.format(20.20222));
结果:20.20

	DecimalFormat df3 = new DecimalFormat("000.000000");
	System.out.println(df3.format(20.20222));
结果:020.202220

2、保留两位小数,如果末尾是0则舍去

        DecimalFormat df2 = new DecimalFormat("#.##");
	System.out.println(df2.format(20.20222));
结果:20.2

	DecimalFormat df4 = new DecimalFormat("###.########");
	System.out.println(df4.format(20.20222));
结果:20.20222

3、设置含%

<span style="white-space:pre">	</span>DecimalFormat df5 = new DecimalFormat();
	df5.applyPattern("##.##%");
	System.out.println(df5.format(20.20222));
结果:2020.22%


4、设置最大位数不超过

	DecimalFormat df6 = new DecimalFormat();
	df6.setMaximumIntegerDigits(1);
	System.out.println(df6.format(20.20222));
结果:0.202

        df6.setMinimumIntegerDigits(10);// 设置整数部分最小长度,不够0补
	System.out.println(df6.format(20.20222));
结果:0,000,000,020.202


5、设置分组

	DecimalFormat df8 = new DecimalFormat();
	int number = 123456789;
	// 设置三个一组
	df8.setGroupingSize(3);
	DecimalFormatSymbols dfs = DecimalFormatSymbols.getInstance();
	// 设置小数字分隔符
	dfs.setDecimalSeparator('!');
	dfs.setGroupingSeparator('0');
	df8.setDecimalFormatSymbols(dfs);
	System.out.println(df8.format(2220.20222));
	df8.setGroupingUsed(false);
	System.out.println(df8.format(2220.20222));

结果:20220!202
            2220!202

6、三位逗号分隔

    System.out.println(new DecimalFormat(",###").format(123456789.123456));       
    System.out.println(new DecimalFormat("这句话是结合文字的,### 元。").format(123456789.123456));  
结果:

123,456,789
这句话是结合文字的123,456,789 元。

BigDecimal.setScale()方法用于格式化小数点
setScale(1)表示保留一位小数,默认用四舍五入方式 
setScale(1,BigDecimal.ROUND_DOWN)直接删除多余的小数位,如2.35会变成2.3 
setScale(1,BigDecimal.ROUND_UP)进位处理,2.35变成2.4 
setScale(1,BigDecimal.ROUND_HALF_UP)四舍五入,2.35变成2.4
setScaler(1,BigDecimal.ROUND_HALF_DOWN)四舍五入,2.35变成2.3,如果是5则向下舍
点击打开链接





### Java BigDecimal去除小数点后多余零的方法 在Java处理`BigDecimal`对象时,如果希望移除小数部分不必要的零,可以采用多种方式实现这一目标。以下是几种常见方法: #### 使用 `stripTrailingZeros()` 方法 此方法能够有效地删除`BigDecimal`数值中小数点之后所有的尾随零,并返回一个新的`BigDecimal`实例表示简化后的值。 ```java import java.math.BigDecimal; public class Main { public static void main(String[] args) { BigDecimal number = new BigDecimal("20.7000"); BigDecimal strippedNumber = number.stripTrailingZeros(); System.out.println(strippedNumber); } } ``` 上述代码展示了如何通过调用`stripTrailingZeros()`来清理掉不需要的小数位[^1]。 #### 利用 `DecimalFormat` 进行格式化输出 另一种方案是借助于`DecimalFormat`类来进行自定义格式化的字符串转换工作,在这里可以通过设置特定模式达到相同的效果——即只保留有效数字而舍弃其余部分。 ```java import java.text.DecimalFormat; import java.math.BigDecimal; public class Main { private static final DecimalFormat decimalFormat = new DecimalFormat("###################.###########"); public static void main(String[] args){ System.out.print("格式化结果:"); System.out.println(decimalFormat.format(new BigDecimal("10.10"))); } } ``` 这段程序说明了利用预设好的`DecimalFormat`对象对给定的大数进行精确控制其显示形式的过程[^2]。 #### 结合 `toPlainString()` 和 `stripTrailingZeros()` 对于某些场景下可能还需要进一步加工得到更简洁直观的结果,则可以在原有基础上加上`.toPlainString()`操作以获得不含指数记法的标准十进制串表达式。 ```java import java.math.BigDecimal; public class Main { public static void main(String[] args) { String result = new BigDecimal(spstFil.getCnt()).stripTrailingZeros().toPlainString(); // 假设 spstFil.getCnt() 返回的是某个 BigDecimal 类型的数据成员 cnt 的值 System.out.println(result); } } ``` 该片段体现了当需要将最终计算所得的`BigDecimal`转成常规字符序列作为输出或存储用途时所采取的做法[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值