import java.math.BigDecimal;
import java.math.BigInteger;
import java.math.RoundingMode;
/*
byte short int long 超出了long范围的整数,在java里不能使用基本数据类型,需要使用BigInteger表示
float double 都有精度丢失的问题,如果想要表示超精度浮点数,需要使用 BigDecimal表示
超大数BigInteger: 底层使用的是字符串存储
超精度浮点数BigDecimal: 底层使用的也是字符串存储
*/
public class BigDemo {
public static void main(String[] args) {
// long l = 23455346234567856789756L;
// BigInteger x = 123434; 不能和基本数据类型转换
BigInteger x = new BigInteger("2345534623456785678975623453456");
BigInteger y = new BigInteger("223456723456764");
// System.out.println(x + 2); 不支持算数运算符
// 只能通过调用方法来实现运算
System.out.println(x.add(y)); // 加法
System.out.println(x.subtract(y)); // 减法
System.out.println(x.divide(y)); // 除法
System.out.println(x.multiply(y)); // 乘法
BigDecimal m = new BigDecimal("3.14152");
BigDecimal n = new BigDecimal("1.0");
System.out.println(m.add(n));
System.out.println(m.subtract(n));
// System.out.println(m.divide(n));
/*divide(BigDecimal divisor,int scale,RoundingMode mode)
divisor: 除数 scale:保留到小数点后scale位 mode:小数点后的保留方式*/
System.out.println(m.divide(n, 3, RoundingMode.HALF_UP)); //HALF_UP 四舍五入
System.out.println(m.multiply(n));
}
}
超大数BigInteger 和 超精度浮点数BigDecimal
最新推荐文章于 2024-07-18 16:29:57 发布