保存java小数点后2位的有效数字
今天,偶尔使用UI布局时,需要显示BigDecimal格式。 显示格式保留小数点后1位。 可悲的是,搜索的结果很相似。 基本上是五种方法。 现在,国内好像发生了奇怪的现象。 有人写广播,别人遇到类似问题后,几乎都是转载或直接复制发表在自己的文章里。 几乎没有任何加工或严重的东西,也说不出自己这样做的理由。 啊,我忘了。 可能有一个理由。 那就是,很多招聘jd上写的,有博客的人会加分。 我想问一下,像这样简单的转载和复制如果不加上自己的验证和思考,会有好处吗? 如果我是面试官的话,我很有可能直接通过。 为什么? 太懒惰了,不管是手懒惰还是思考懒惰都会对自己的职业产生不良影响。
我自己的想法
你可能会用自己的想法晒我的毛,说确实没什么用,但自己后悔回想的时候可能会长毛了。 很多虾、大侠、大神都说不做轮子,不重复做轮子,用经过验证的直接拿来现成的。 理论上没有错,但有一件事是错的。 那就是,他们已经明白了车轮的原理,不再是很多人只是使用的那种简单的事情,而且已经能快点车轮了。 记住别人的经历一定不适合你,不要老是找相似的地方,那样越来越觉得自己像大神,找不同的地方,那样就会像自己,最终成为大神。
结束胡说,进入正题
引入在检索结果中保持两位小数的五种方法
以下是互联网上常见的五种方法。 这里贴上验证的完整代码,以便其他同学可以验证
公共类测试Java {
publicstaticvoidmain (字符串[ ] args ) {
bigdecimal bigdecimal=new bigdecimal (' 100.000 );
bigdecimal bigdecimal2=new bigdecimal (' 0.0810 );
方法1 (bigdecimal;
方法1 (bigdecimal 2;
system.out.print ln------------------------ -;
方法2 (bigdecimal;
方法2 (bigdecimal 2;
system.out.print ln------------------------ -;
方法3 (bigdecimal;
方法3 (bigdecimal 2;
system.out.print ln------------------------ -;
方法4 (bigdecimal;
方法4 (bigdecimal 2;
system.out.print ln------------------------ -;
方法5 (bigdecimal;
方法5 (bigdecimal 2;
}
//*
方法1
* @param f
*/
publicstaticvoidmethod1(bigdecimal f ) {
//bigdecimalBG=newbigdecimal(f;
doubleF1=f.setscale(2,BigDecimal.ROUND_HALF_UP ).doubleValue );
system.out.println (mehtod1result is : ) F1 );
}
//*
方法2
* @param f
*/
publicstaticvoidmethod2(bigdecimal f ) {
decimal format df=new decimal format (' #.00 ';
system.out.println (' mehtod2result is : ' df.format ) );
}
//*
方法3
* @param f
*/
publicstaticvoidmethod3(bigdecimal f ) {
system.out.println (mehtod3result is : ) string.format ),f );
}
//*
*方法4
* @param f
*/
publicstaticvoidmethod4(bigdecimal f ) {
numberformatnf=number format.getnumber instance (;
nf.setmaximumfractiondigits(2);
system.out.println (' mehtod4result is : ' nf.format ) );
}
//*
*方法5
* @param f
*/
publicstaticvoidmethod5(bigdecimal f ) {
浮动值=f .浮动值(;
floatnum=(float ) ) math.round ) floatvalue*100 )/100 );
system.out.println (' mehtod5result 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,与所有数字类型兼容。
得到的结论
目前,只有第三种方法便于使用字符串处理,但效率不是最高的。 有更好的答案吗? 一定有。 请来弄坏。 自己找到的话会补充。