您的位置:首页 > 职场人生

黑马程序员-------小数运算之BigDecimal

2015-06-15 16:21 686 查看
------- android培训java培训、期待与您交流!
----------

当我们对浮点数进行运算时,不要使用基本数据类型:float和double。因为很容易会产生精度丢失的问题:

System.out.println(0.09 + 0.01);
System.out.println(1.0 - 0.32);
System.out.println(1.015 * 100);
System.out.println(1.301 / 100);


以上运算都会丢失精度

对于浮点运算,要使用BigDecimal类。

推荐使用的构造方法:

public BigDecimal(String val)

成员方法:

<span style="white-space:pre">	</span>public BigDecimal add(BigDecimal augend) //加
public BigDecimal subtract(BigDecimal subtrahend) //减
public BigDecimal multiply(BigDecimal multiplicand) //乘
public BigDecimal divide(BigDecimal divisor) //除
(推荐)public BigDecimal divide(BigDecimal divisor,int scale, int roundingMode) //除法。可以指定精度,以及舍入方式;
参数:
divisor - 此 BigDecimal 要除以的值。
scale - 要返回的 BigDecimal 商的标度。
roundingMode - 要应用的舍入模式。


<span style="white-space:pre">		</span>BigDecimal big1 = new BigDecimal("0.00009");
BigDecimal big2 = new BigDecimal("0.01");

//加
BigDecimal bigResult = big1.add(big2);
System.out.println("加法:" + bigResult);

//减
bigResult = big1.subtract(big2);
System.out.println("减法:" + bigResult);

//乘法:
bigResult = big1.multiply(big2);
System.out.println("乘法:" + bigResult);

//除法:
bigResult = big1.divide(big2);
System.out.println("除法:" + bigResult);

//除法:要求:取小数点后两位,并且四舍五入
bigResult = big1.divide(big2,2,RoundingMode.HALF_UP);
System.out.println("保留2位小数,并四舍五入:" + bigResult);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: