Java BigDecimal 如何去掉末尾多余的 0
原文地址:https://blog.csdn.net/qq_28165595/article/details/119465037
前言
在日常项目中,我们经常会和价格、单价等金额打交道,为了保证数据的精度,我们一般会用BigDecimal来定义字段属性。BigDecimal有很多坑,平时开发中一定多注意,小细节要多注意,不小心就是一个现网事故啊。
BigDecimal的导致的科学计数法展示问题
No BB,直接上demo
@Test
public void testBidDecimal() {
//未设置小数位数,直接去掉了后面的小数0
BigDecimal test = new BigDecimal(100.00);
System.out.println(test.toString()); // 100
//设置了保留1位小数
test = new BigDecimal(100.00).setScale(1, RoundingMode.HALF_DOWN);
System.out.println(test.toString()); // 100.0
//设置了保留1位小时,小数位如果是0,直接省去,如果非零则保留
BigDecimal testStripTrailingZeros1 = new BigDecimal(123.00).
setScale(1, RoundingMode.HALF_DOWN).stripTrailingZeros();
System.out.println(testStripTrailingZeros1); // 123
//如果小数点前面是10的整数倍,会被表现成科学计数法
BigDecimal testStripTrailingZeros2 = new BigDecimal(100.000).
setScale(1, RoundingMode.HALF_DOWN).stripTrailingZeros();
System.out.println(testStripTrailingZeros2); //1E+2
//再加上toPlainString就能解决上述问题了
System.out.println(testStripTrailingZeros2.toPlainString()); //100
}
上面在直接使用stripTrailingZeros方法后,如果整数是10的倍数会被展示成科学计数法的形式,这样的数据传给前端,前端同学提着键盘就冲过来了。
————————————————
版权声明:本文为CSDN博主「爱琴孩」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_28165595/article/details/119465037
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了