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

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

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

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.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.net/190188.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Android Studio Unable to find EOCD signature解决方法

    Android Studio Unable to find EOCD signature解决方法今天早上来公司突然发现项目打包不了研究了一下应该是gradle版本冲突了解决方法就是Build

    2022年4月29日
    48
  • MySQL 数据库命名规范.PDF

    MySQL 数据库命名规范.PDF

    2022年2月20日
    50
  • Oracle insert into select大数据量踩过的坑

    Oracle insert into select大数据量踩过的坑1、简单粗暴insertintotable1select*fromtable2;commit;灰度环境机器配置不好,二百多万数据十来分钟没有导完,产生大量归档日志。删除索引约束后可能要好点。大数量有风险,可能会导致归档日志撑爆。2、nologgingaltertabletable1nologging;insert/*+append*/intotable…

    2022年7月15日
    85
  • 苹果跳过id教程_苹果手机怎么绕过ID

    苹果跳过id教程_苹果手机怎么绕过ID如果您是非法渠道获得的手机请关闭本网页。常见问题汇总:iPhone5s,iPhone6、6plus,iPhoneSE,6S,iPhone6SPiPhoneSE,iPhone7,iPhone7P,iPhone8/iPhone8P,iPhoneX。iPadMini2,iPadMini3,iPadMini4,iPadAir,iPadPro(12.9…

    2022年9月22日
    0
  • python使用RSA加密算法

    python使用RSA加密算法最近换了工作,由于新公司是做个人和企业征信业务的,所以对数据的隐私性看的非常重要,所有涉及隐私的数据一律都要进行加密进行传输。那么问题来了,对我我要做的工作,就是要实现我们接口自动化,免不了要接触加密-签名-解密-验签等一系列过程。这时候就觉得大学真的白学密码学了。。。基于我用python语言搞,那我这里就说说我是如何实现python对数据进行RSA加解密的吧。。一、查找python支…

    2022年5月4日
    48
  • endnote参考文献改为文字(参考文献endnote格式)

    最简单的,自动下载style:打开endnote—-edit—-outputstyles—-openstylemaneger—-在新打开的界面中点击中部的getmoreontheweb,此时自动连接endnote官网,在网页中部的搜索窗口输入目标杂志名称,点击search,然后在弹出的resultsfound下方点击搜索结果后方的download,下载文件,之…

    2022年4月16日
    252

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号