Java -- 高精度

Java – 高精度

BigInteger实现高精度整数计算
import java.math.BigInteger;
public class Main 
{
    public static void main(String[] args) 
    {
        BigInteger a = new BigInteger("1");
        BigInteger b = new BigInteger("2");
        BigInteger c = new BigInteger("3");
        c = a.add(b);		//相加						
        System.out.println("c = a + b, c = " + c);
        c = a.subtract(b);	//相减
        System.out.println("c = a - b, c = " + c);
        c = a.multiply(b);	//相乘
        System.out.println("c = a * b, c = " + c);
        c = a.divide(b);	//相除取整
        System.out.println("c = a / b, c = " + c);
        c = a.remainder(b);	//取余
        System.out.println("c = a % b, c = " + c);
    }
}

结果如下:

c = a + b, c = 3
c = a - b, c = -1
c = a * b, c = 2
c = a / b, c = 0
c = a % b, c = 1

BigDecimal实现高精度浮点数计算
import java.math.BigDecimal;
public class Main
{
    public static void main(String[] args) 
    {
    	Scanner sca = new Scanner(System.in);
		BigDecimal a = new BigDecimal("1.23");
		BigDecimal b = new BigDecimal("2.34");
		BigDecimal c = new BigDecimal("3.33");
		c = a.add(b);				//加法
		System.out.println("c = a + b, c = " + c);
		c = a.subtract(b);			//减法
		System.out.println("c = a - b, c = " + c);
		c = a.multiply(b);			//乘法
		System.out.println("c = a * b, c = " + c);
		c = a.divide(b, 3, BigDecimal.ROUND_UP);	//除法
		System.out.println("c = a / b, c = " + c);
		c = a.subtract(b).abs();	//绝对值
		System.out.println("c = |a - b|, c = " + c);
    }
}

结果如下:

c = a + b, c = 3.57
c = a - b, c = -1.11
c = a * b, c = 2.8782
c = a / b, c = 0.526
c = |a - b|, c = 1.11

特别注意:divide()除法如果只有BigDecimal参数可能会报错。

在这里插入图片描述

divide(BigDecimal divisor 除数, int scale 精确小数位, int roundingMode 舍入模式)

一共八种舍入模式

(1)ROUND_UP

​ 远离零的舍入模式

​ 例:1 / 3 = 0.334

(2)ROUND_DOWN

​ 接近零的舍入模式

​ 例:1 / 3 = 0.333

(3)ROUND_CEILING

​ 接近正无穷大的舍入模式

​ 例:1 / 3 = 0.334

​ -1 / 3 = -0.333

(4)ROUND_FLOOR

​ 接近负无穷大的舍入模式

​ 例:1 / 3 = 0.333

​ -1 / 3 = -0.334

(5)ROUND_HALF_UP

​ 四舍五入

​ 例:1.225 => 1.23

(6)ROUND_HELF_DOWN

​ 五舍六入

​ 例:1.336 => 1.34

(7)ROUND_HALF_EVEN

​ 如果舍弃部分左边的数字为奇数,则四舍五入;

​ 如果舍弃部分左边的数字为偶数,则五舍六入;

​ 例:1.115 => 1.12

​ 1.225 => 1.22

​ 1.226 => 1.23

(8)ROUND_UNNECESSARY

​ 舍入模式可以断言所请求的操作具有准确的结果,因此不需要舍入。

​ 如果结果为无限小数情况下会抛出异常。


初始化参数建议字符串;

参与BigInteger运算的变量必须全部是BigInteger类型,如果初始化过多的BigInteger变量将影响到时间效率,尽可能重复利用BigInteger变量。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值