package demo.api;
import org.junit.Test;
import java.math.BigDecimal;
import java.math.BigInteger;
public class BigDecimal和BigInteger {
/**
* double只适合科学计算法
*/
@Test
public void testDouble() {
double d1 = 0.1;
double d2 = 0.006;
System.out.println(d1 + d2);//0.10600000000000001
double d3 = 2.0;
double d4 = 1.1;
//二进制运算导致的误差, 二进制的1/10,十进制的1/3
System.out.println(d3 - d4);//0.8999999999999999
}
/**
* BigDecimal适合高精度计算
*/
@Test
public void testBigDecimal() {
//两种赋值方法
BigDecimal d1 = new BigDecimal("0.1");
BigDecimal d2 = BigDecimal.valueOf(0.006);
System.out.println("加:" + d1.add(d2));
System.out.println("减:" + d1.subtract(d2));
System.out.println("乘:" + d1.multiply(d2));
//divide(商,几位小数,如何舍取 ROUND_HALF_UP向上取舍)
System.out.println("除:" + d1.divide(d2, 10, BigDecimal.ROUND_HALF_UP));
//原数不变(转换为double类型显示)
System.out.println("d1: " + d1.doubleValue());
System.out.println("d2: " + d2.doubleValue());
}
/**
* BigInteger 大数据运算
*/
@Test
public void testBigInteger() {
BigInteger b1 = new BigInteger("1");
for (int i = 1; i <= 21; i++) {
BigInteger bi = BigInteger.valueOf(i);
b1 = b1.multiply(bi);
}
System.out.println("21的阶乘:" + b1);
}
}
BigDecimal和BigInteger常用方法
最新推荐文章于 2024-01-04 17:27:00 发布