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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SQLite分析之WAL机制

    SQLite分析之WAL机制对 SQLite 的 WAL 机制的分析

    2026年1月18日
    1
  • python处理异常的关键字_如果抛出异常应用哪些关键字

    python处理异常的关键字_如果抛出异常应用哪些关键字一.抛出异常Python用异常对象(exceptionobject)表示异常情况,遇到错误后,会引发异常。如果异常对象并未被处理或捕捉,程序就会用所谓的回溯(Traceback,一种错误信息)终止执行。raise语句Python中的raise关键字用于引发一个异常,基本上和C#和Java中的throw关键字相同,如下所示:importtracebackdefthrow_error():…

    2022年10月18日
    3
  • 以太坊私有链搭建_eth节点搭建

    以太坊私有链搭建_eth节点搭建Johnsir亲传不作任何商业用途首先创建三个文件夹分别为三个节点每个文件夹准备好一个存放数据的文件夹然后进入John1cmd进入puppeth后面的直接回车就可以到这步开始导出导出后文件夹多了四个文件主要用到的就是jhgeth.json其他三个可有可无geth–datadir”./jhdata”–networkid112233initjhgeth.json初始化创世块获取到geth…

    2022年10月7日
    5
  • 工业互联网大数据平台建设方案[通俗易懂]

    工业互联网大数据平台建设方案[通俗易懂]工业互联网大数据平台建设方案

    2022年6月10日
    37
  • hibernate官方新手教程 (转载)

    hibernate官方新手教程 (转载)

    2021年12月6日
    56
  • linux某用户 计划任务,Linux计划任务管理

    linux某用户 计划任务,Linux计划任务管理Linux计划任务管理前言:在Linux操作系统中,除了用户即时执行的命令操作以外,还可以配置在指定的时间、指定的日期执行预先计划好的系统管理任务(如定期备份、定期采集监测数据)。RHEL6系统中默认已安装了at、cronie软件包,通过atd和crond这两个系统服务实现一次性、周期性计划任务的功能,并分别通过at、crontab命令进行计划任务设置。一、at命令一次性计划任务前提条件:对应的系…

    2022年7月13日
    16

发表回复

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

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