java有效数字包括小数点那_java 小数点后保留两位有效数字

本文探讨了在Java中使用BigDecimal保留小数点后两位的五种常见方法,并通过代码验证了它们的效果。作者指出,虽然字符串处理方法在表现上较为理想,但效率并非最高。博客引发了对于盲目复制粘贴代码而不深入理解的反思,提倡开发者应理解并优化所使用的代码。作者鼓励寻找更好的解决方案,并邀请读者分享和探讨。
摘要由CSDN通过智能技术生成

java 小数点后保留两位有效数字

今天偶尔用到了UI布局需要把BigDecimal格式显示出来,显示的格式是小数点后保留一位,比较可悲的是搜索的结果大同小异,基本都是五种方式。目前在国内好像出现了一种奇怪的现象,有一个人写了播放,其他人遇到类似的问题后,基本都是转载或者直接拷贝发表成自己的文章。几乎没有任何的加工和严重,更不能说出什么理由说出自己这么做,哦忘记了,可能有一条理由,那就是很多招聘jd上写着,有博客者加分。很想问一下这样简单的转载或者拷贝不加上自己的验证或者思考能加分吗?如果我是面试官,我很可能会直接pass了,为什么?太懒了,无论是手懒还是思维懒都会对自己的职业产生不利的影响。

我自己的想法

你可能会说你自己的想法干我毛用,的确没什么用,但是自己后悔后想起的时候可能就有毛用了。很多大虾,大侠,大神都说不要造轮子,更不要重复造轮子,要使用已经验证的直接拿来就好用的。理论上没错,但是有一点错了,那就是他们已经理解了轮子的原理,已经会早轮子了,而不是像很多人只是会用那样简单。记住别人的经验一定不适合你,别老是找相似点,那样越发的觉得自己像大神,要找不同点,这样才会像自己,最终才是大神。

结束废话进入正题

引入搜索结果五种保留两位小数的方法

以下是网络常见的五种方法,这里我贴上验证的完整代码以便于其他同学验证

public class TestJava {

public static void main(String[] args) {

BigDecimal bigDecimal = new BigDecimal("100.000");

BigDecimal bigDecimal2 = new BigDecimal("0.0810");

method1(bigDecimal);

method1(bigDecimal2);

System.out.println("----------------------------------------");

method2(bigDecimal);

method2(bigDecimal2);

System.out.println("----------------------------------------");

method3(bigDecimal);

method3(bigDecimal2);

System.out.println("----------------------------------------");

method4(bigDecimal);

method4(bigDecimal2);

System.out.println("----------------------------------------");

method5(bigDecimal);

method5(bigDecimal2);

}

/**

* 方法一

* @param f

*/

public static void method1(BigDecimal f){

//BigDecimal bg = new BigDecimal(f);

double f1 = f.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();

System.out.println("mehtod1 result is:"+f1);

}

/**

* 方法二

* @param f

*/

public static void method2(BigDecimal f){

DecimalFormat df = new DecimalFormat("#.00");

System.out.println("mehtod2 result is:"+df.format(f));

}

/**

* 方法三

* @param f

*/

public static void method3(BigDecimal f){

System.out.println("mehtod3 result is:"+String.format("%.2f", f));

}

/**

* 方法四

* @param f

*/

public static void method4(BigDecimal f){

NumberFormat nf = NumberFormat.getNumberInstance();

nf.setMaximumFractionDigits(2);

System.out.println("mehtod4 result is:"+nf.format(f));

}

/**

* 方法五

* @param f

*/

public static void method5(BigDecimal f){

float floatValue= f.floatValue();

float num=(float)(Math.round(floatValue*100)/100);

System.out.println("mehtod5 result is:"+num);

}

}

验证结果

mehtod1 result is:100.0

mehtod1 result is:0.08

----------------------------------------

mehtod2 result is:100.00

mehtod2 result is:.08

----------------------------------------

mehtod3 result is:100.00

mehtod3 result is:0.08

----------------------------------------

mehtod4 result is:100

mehtod4 result is:0.08

----------------------------------------

mehtod5 result is:100.0

mehtod5 result is:0.0

看出什么了吗?仅仅把代码贴到IDE里面验证一下就可以得出上面的结论。这里是有BigDecimal来兼容所有数字类型。

得出的结论

目前只有第三种办法字符串处理是比较好用的,但是效率却不是最高的,有没有更好的答案呢?一定有的,欢迎来砸,如果我自己找到也补充上。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值