前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >BigDecimal保留两位小数及格式化成百分比[通俗易懂]

BigDecimal保留两位小数及格式化成百分比[通俗易懂]

作者头像
全栈程序员站长
发布2022-11-09 19:58:20
3.7K0
发布2022-11-09 19:58:20
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

BigDecimal保留两位小数及格式化成百分比

在项目中经常会用到小数的一些计算,而float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合。但是,商业计算往往要求结果精确。所以有时候必须要采用BigDecimal。

public class Demo { public static void main(String[] args) { BigDecimal a =null; Integer faultRate = 6; a = BigDecimal.valueOf(faultRate.doubleValue()/3); BigDecimal b =a.setScale(2, RoundingMode.HALF_UP);//保留两位小数 System.out.println(“结果是”+b); //下面将结果转化成百分比 NumberFormat percent = NumberFormat.getPercentInstance(); percent.setMaximumFractionDigits(2);

System.out.println(percent.format(b.doubleValue())); } }

运行结果是:

BigDecimal保留两位小数及格式化成百分比[通俗易懂]
BigDecimal保留两位小数及格式化成百分比[通俗易懂]

BigDecimal.setScale()方法用于格式化小数点 setScale(1)表示保留一位小数,默认用四舍五入方式 setScale(1,BigDecimal.ROUND_DOWN)直接删除多余的小数位,如2.35会变成2.3 setScale(1,BigDecimal.ROUND_UP)进位处理,2.35变成2.4 setScale(1,BigDecimal.ROUND_HALF_UP)四舍五入,2.35变成2.4

setScaler(1,BigDecimal.ROUND_HALF_DOWN)四舍五入,2.35变成2.3,如果是5则向下舍

setScaler(1,BigDecimal.ROUND_CEILING)接近正无穷大的舍入

setScaler(1,BigDecimal.ROUND_FLOOR)接近负无穷大的舍入,数字>0和ROUND_UP作用一样,数字<0和ROUND_DOWN作用一样

setScaler(1,BigDecimal.ROUND_HALF_EVEN)向最接近的数字舍入,如果与两个相邻数字的距离相等,则向相邻的偶数舍入。

注释:

1:scale指的是你小数点后的位数。比如123.456则score就是3.

score()就是BigDecimal类中的方法啊。 比如:BigDecimal b = new BigDecimal(“123.456”);

b.scale(),返回的就是3.

2:roundingMode是小数的保留模式。它们都是BigDecimal中的常量字段,有很多种。 比如:BigDecimal.ROUND_HALF_UP表示的就是4舍5入。 3:pubilc BigDecimal divide(BigDecimal divisor, int scale, int roundingMode) 的意思是说:我用一个BigDecimal对象除以divisor后的结果,并且要求这个结果保留有scale个小数位,roundingMode表示的就是保留模式是什么,是四舍五入啊还是其它的,你可以自己选!

4:对于一般add、subtract、multiply方法的小数位格式化如下:

BigDecimal mData = new BigDecimal(“9.655”).setScale(2, BigDecimal.ROUND_HALF_UP); System.out.println(“mData=” + mData);

—-结果:—– mData=9.66

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/190188.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月23日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • BigDecimal保留两位小数及格式化成百分比
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档