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。

 

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

 相关推荐:

posted @ 2023-06-02 11:04  Marydon  阅读(2090)  评论(0编辑  收藏  举报