概述
一.BigDecimal的创建
BigDecimal有两种创建方法,一种是通过构造方法,可以传入String类型,int类型,double类型,long类型或BigInteger类型的参数,
一种是通过BigDecimal的静态方法valueOf创建BigDecimal对象,只能传double类型或long类型的参数
package com.example2.demo;
import org.junit.Test;
import java.math.BigDecimal;
public class BigDecimalTests {
@Test
public void testBigDecimal() {
//通过构造函数创建BigDecimal对象
BigDecimal big1 = new BigDecimal("1.1");
BigDecimal big2 = new BigDecimal("2.2");
BigDecimal big3 = big1.add(big2);
System.out.println(big3);
//通过BigDecimal的静态方法valueOf创建BigDecimal对象
BigDecimal big4 = BigDecimal.valueOf(1.1);
BigDecimal big5 = BigDecimal.valueOf(2.2);
BigDecimal big6 = big4.add(big5);
System.out.println(big6);
}
}
BigDecimal的创建有个容易出错的地方需要注意,
当通过构造函数创建BigDecimal对象时,如果传入的参数是double类型,计算的精度有可能不准确
所以使用BigDecimal的时候,
如果参数是字符串类型,使用构造函数创建BigDecimal对象;
如果参数是数值类型,则使用BigDecimal.valueOf()方法创建BigDecimal对象,或者先通过toString()方法将参数转化为字符串,再通过构造函数创建BigDecimal对象;
二.BigDecimal的加减乘除
package com.example2.demo;
import org.junit.Test;
import java.math.BigDecimal;
public class BigDecimalTests {
@Test
public void testBigDecimal() {
//BigDecimal的加法运算,通过调用add方法
BigDecimal add1 = BigDecimal.valueOf(2.2);
BigDecimal add2 = BigDecimal.valueOf(1.1);
BigDecimal add3 = add1.add(add2);
System.out.println(add3);
//BigDecimal的减法运算,通过调用subtract方法
BigDecimal sub1 = BigDecimal.valueOf(2.2);
BigDecimal sub2 = BigDecimal.valueOf(1.1);
BigDecimal sub3 = sub1.subtract(sub2);
System.out.println(sub3);
//BigDecimal的乘法运算,通过调用multiply方法
BigDecimal mul1 = BigDecimal.valueOf(2.2);
BigDecimal mul2 = BigDecimal.valueOf(1.1);
BigDecimal mul3 = mul1.multiply(mul2);
System.out.println(mul3);
//BigDecimal的除法运算,通过调用divide方法
BigDecimal div1 = BigDecimal.valueOf(2.2);
BigDecimal div2 = BigDecimal.valueOf(1.1);
BigDecimal div3 = div1.divide(div2);
System.out.println(div3);
}
}
BigDecimal的除法有时候会有除不尽的情况,这时就需要精确到固定位数,并需要四舍五入,这里第二个参数需要传入小数位数,
第三个参数需要传入舍入模式,常用的舍入模式有:
ROUND_HALF_UP 四舍五入
ROUND_UP 进一法
ROUND_DOWN 去尾法
三.两个BigDecimal值的比较
使用compareTo方法可以比较两个BigDecimal值的大小,compareTo方法只会比较BigDecimal的数值,而不会比较BigDecimal的小数位数,但是equals方法先会比较小数位数是否相同,相同后才会比较数值,
例如new BigDecimal("1.10")和new BigDecimal("1.1"),使用equals比较就是不相等的,因为小数位数一个是2,一个是1
所以推荐使用compareTo方法,
package com.example2.demo;
import org.junit.Test;
import java.math.BigDecimal;
public class BigDecimalTests {
@Test
public void testBigDecimal() {
BigDecimal A = BigDecimal.valueOf(1);
BigDecimal B = BigDecimal.valueOf(3);
// A 小于 B, 返回 -1,
// A 等于 B, 返回 0,
// A 大于 B, 返回 1
int result = A.compareTo(B);
System.out.println(result);
}
}
总结:
BigDecimal用于表示精确的小数,常用于商业计算
如果参数是String类型,则使用构造函数创建BigDecimal对象,
如果参数是数值类型,则可以通过BigDecimal.valueOf()方法创建BigDecimal对象,其内部原理是通过toString()方法将数值转为字符串,然后调用构造函数;
BigDecimal的加减乘除方法分别为add,subtract,multiply,divide,都可以传入两个参数,一个控制小数位数,一个规定舍入模式
使用compareTo对两个BigDecimal对象进行比较,
例如:A.compareTo(B),
返回-1代表A小于B,
返回0代表A等于B,
返回1代表A大于B
最后
以上就是高兴招牌为你收集整理的BigDecimal的基本使用一.BigDecimal的创建二.BigDecimal的加减乘除三.两个BigDecimal值的比较总结:的全部内容,希望文章能够帮你解决BigDecimal的基本使用一.BigDecimal的创建二.BigDecimal的加减乘除三.两个BigDecimal值的比较总结:所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复