java 如何保留小数位的0?(#.##与0.00的区别)
1.情景展示
如上图所示,在java语言中,如果后面的小数位是零的话,会被自动抹除。
但在实际场景中,我们往往需要对小数位进行管理(统一展示小数的位数):
不足小数位的进行补零操作,多余的小数位进行舍弃或者四舍五入。
具体应如何实现?
2.具体分析
通过DecimalFormat.format()方法实现。
3.解决方案
对数值进行格式化的方式有两种,一种是#.##,另一种是0.00。
两者的区别,其实就是#与0的区别,下面进行举例说明。
DecimalFormat.format()返回的是String类型。
#.##
保留两位小数,通常用于被格式的数值,它的小数位明显多于要保留的位数(>2)。
如果,被格式的数值,它的小数位少于要保留的位数(<2),不进行补零操作。
我们可以看到,当小数位较少时,执行的是:舍弃剩余的小数(不四舍五入)。
当小数位很多时,执行的是四舍五入操作。
不知道是怎么回事,应该是java的Double和Float进行计算时出现的损失精度问题。
0.00
保留两位小数,通常用于被格式的数值,它的小数位明显多于要保留的位数(>2)。
如果,被格式的数值,它的小数位少于要保留的位数(<2),进行补零操作。
我们可以看到,0与#唯一的区别,就是:
0:当实际小数位不足要保留的位数时,会自动补零,补齐剩余位数;
#:当实际小数位不足要保留的位数时,不补零。
方式一:以String的形式存在
方式二:以BigDecimal的形式存在
在java当中,如果想要数值后面的零不消失,并且以数值类型的方式存在,需要将Double或Float类型转换成BigDecimal类型。
但是,Double或Float不能出现,只能以String的形式出现,再String转BigDecimal。
写在最后
哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!
相关推荐:
本文来自博客园,作者:Marydon,转载请注明原文链接:https://www.cnblogs.com/Marydon20170307/p/17451205.html