java基础学习API之BigDecimal类 九-5

来源:互联网 发布:m audio声卡驱动mac 编辑:程序博客网 时间:2024/05/22 04:54

BigDecimal类

不可变的、任意精度的有符号十进制数

package fanxing;import java.math.BigDecimal;/** * BigDecimal * @author Angus *不可变的、任意精度的有符号十进制数 * *构造: *public BigDecimal(double val)将 double 转换为 BigDecimal,后者是 double 的二进制浮点值准确的十进制表示形式 *注意 此构造方法的结果有一定的不可预知性 *public BigDecimal(String val) BigDecimal 的字符串表示形式转换为 BigDecimal  可以预知 *成员方法: *add(BigDecimal augend) 加 * *subtract(BigDecimal subtrahend) 减 *返回一个 BigDecimal,其值为 (this - subtrahend),其标度为 max(this.scale(), subtrahend.scale())。 * *multiply(BigDecimal multiplicand) 乘 *返回一个 BigDecimal,其值为 (this × multiplicand),其标度为 (this.scale() + multiplicand.scale())。 * *divide(BigDecimal divisor, int scale, int roundingMode) 除 *返回一个 BigDecimal,其值为 (this / divisor),其标度为指定标度。如果必须执行舍入,以生成具有指定标度的结果,则应用指定的舍入模式。 *参数: *divisor - 此 BigDecimal 要除以的值。 *scale - 要返回的 BigDecimal 商的标度。 *roundingMode - 要应用的舍入模式   */public class BigDecimalDemo {public static void main(String[] args) {//基本double类型运算double d1 = 2.0;double d2 = 1.1;System.out.println(d1+d2); //3.1System.out.println(d1-d2); //0.8999999999999999System.out.println(d1*d2);//2.2System.out.println(d1/d2);//1.8181818181818181//方式一 public BigDecimal(double val)  不可预测性BigDecimal bd1 = new BigDecimal(2.0);BigDecimal bd2 = new BigDecimal(1.1);System.out.println(bd1.add(bd2)); //3.100000000000000088817841970012523233890533447265625System.out.println(bd1.subtract(bd2));//0.899999999999999911182158029987476766109466552734375System.out.println(bd1.multiply(bd2)); //2.200000000000000177635683940025046467781066894531250System.out.println(bd1.divide(bd2, 2,BigDecimal.ROUND_UP)); //ROUND_UP舍入远离零的舍入模式。 //1.82//方式二BigDecimal bd3 = new BigDecimal("2.0");BigDecimal bd4 = new BigDecimal("1.1");System.out.println(bd3.add(bd4)); //3.1System.out.println(bd3.subtract(bd4));//0.9System.out.println(bd3.multiply(bd4)); //2.20System.out.println(bd3.divide(bd4, 2,BigDecimal.ROUND_UP)); //ROUND_UP舍入远离零的舍入模式。 //1.82//结论  方式二适应开发中。。。。}}


结果;


这样就可以精确小数位而不存在精度问题了。。。。


1 0
原创粉丝点击