java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > BigDecimal保留两位小数

BigDecimal如何保留两位小数

作者:慢慢变富的w

本文介绍了浮点数计算的不精确性,以及在商业计算中需要使用BigDecimal来保证精确性,详细解释了BigDecimal的setScale()方法和roundingMode常量的使用方法,并提供了示例代码

前言

在项目中经常会用到小数的一些计算,而float和double类型的主要设计目标是为了科学计算和工程计算。

他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。

然而,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合。

但是,商业计算往往要求结果精确。所以有时候必须要采用BigDecimal。

1.代码实现

代码如下(示例):

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()));
   }
}

运行结果:


2.方法详解

注释

1:scale指的是你小数点后的位数。

2:roundingMode是小数的保留模式。

3:pubilc BigDecimal divide(BigDecimal divisor, int scale, int 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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文