概述
使用SpringCloudAlibaba+Vue(ant-design)进行项目开发,一个BigDecimal类型的数,要求保留5位小数。
1、格式化数据
BigDecimal对象格式化可以使用DecimalFormat对象,首先看一下如何解决上述问题
public class BigDecimalTest {
public static void main(String[] args) {
//有两个decimal对象
BigDecimal decimal = new BigDecimal(1.5001385);
BigDecimal _decimal = new BigDecimal(1.5001);
//格式化对象
DecimalFormat decimalFormat = new DecimalFormat("0.00000");
//超过5位默认进行四舍五入
String strVal = decimalFormat.format(decimal);
System.out.println(strVal);
//不足5位补0
String _strVal = decimalFormat.format(_decimal);
System.out.println(_strVal);
}
}
输出结果:
2、解决返回后补位0消失的问题
完成上述操作后,本以为问题解决了,但是进行接口测试时发现,1.50010通过json返回给接口调用者之后,最后补位的0消失了。
原因:进行序列化时会使用数字的序列化方式,此时就会将末尾的0舍掉
解决:使用字符串的序列化方式,在字段对象上面添加注解@JsonFormat(shape = JsonFormat.Shape.STRING)
3、DecimalFormat基本使用
贴一篇文章https://www.jianshu.com/p/b3699d73142e,此处只介绍各种符号及其基本使用
//例
double pi = 3.1415927;//圆周率
//取一位整数
System.out.println(new DecimalFormat("0").format(pi));//3
//取一位整数和两位小数
System.out.println(new DecimalFormat("0.00").format(pi));//3.14
//取两位整数和三位小数,整数不足部分以0填补。
System.out.println(new DecimalFormat("00.000").format(pi));// 03.142
//取所有整数部分
System.out.println(new DecimalFormat("#").format(pi));//3
//以百分比方式计数,并取两位小数
System.out.println(new DecimalFormat("#.##%").format(pi));//314.16%
/**
* 上面的代码就是网上很经典的案例,下面我们来分析另外的一个值
*/
pi=12.34567;
//取一位整数
System.out.println(new DecimalFormat("0").format(pi));//12
//取一位整数和两位小数
System.out.println(new DecimalFormat("0.00").format(pi));//12.35
//取两位整数和三位小数,整数不足部分以0填补。
System.out.println(new DecimalFormat("00.000").format(pi));// 12.346
//取所有整数部分
System.out.println(new DecimalFormat("#").format(pi));//12
//以百分比方式计数,并取两位小数
System.out.println(new DecimalFormat("#.##%").format(pi));//1234.57%
/**
* 扩展,如果是其他的数字会是下面的效果
*/
pi=12.34;
//整数
System.out.println(new DecimalFormat("6").format(pi));//612
System.out.println(new DecimalFormat("60").format(pi));//612
System.out.println(new DecimalFormat("06").format(pi));//126
System.out.println(new DecimalFormat("00600").format(pi));//00126
System.out.println(new DecimalFormat("#####60000").format(pi));//00126
//小数
System.out.println(new DecimalFormat(".6").format(pi));//12.6
System.out.println(new DecimalFormat(".06").format(pi));//12.36
System.out.println(new DecimalFormat(".60").format(pi));//12.36
System.out.println(new DecimalFormat(".0600").format(pi));//12.3406
System.out.println(new DecimalFormat(".6000").format(pi));//12.3406
System.out.println(new DecimalFormat(".600000##").format(pi));//12.340006
最后
以上就是无聊发箍为你收集整理的BigDecimal保留n位小数,小数位不足补0的全部内容,希望文章能够帮你解决BigDecimal保留n位小数,小数位不足补0所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复