gpt4 book ai didi

java - 在java中,如何划分两个BigIntegers并将值存储在double中?

转载 作者:行者123 更新时间:2023-12-04 14:40:45 29 4
gpt4 key购买 nike

所以我试图将两个 BigIntegers 22 和 7 相除。换句话说,我试图存储 b1.divide(b2) 的前几位小数。 [哪里b1 = new BigInteger("22") , 和 b2 = new BigInteger("7") ] 转换成某种数据类型。但是,如果我使用 BigDecimal ,它显示了一个无法表示的数字错误,而它甚至不适用于 double 。我该怎么办?为方便起见,代码如下:

BigInteger b1 = new BigInteger("22");
BigInteger b2 = new BigInteger("7");
BigInteger b3 = b1.divide(b2);
System.out.println(b3);

这是控制台中显示的内容:
Exception in thread "main" java.lang.ArithmeticException: Non-terminating decima
l expansion; no exact representable decimal result.
at java.math.BigDecimal.divide(Unknown Source)
at Divider.main(Divider.java:13)

最佳答案

使用 BigInteger.divide(...)会给BigInteger只有这样,如果直接使用此方法,您将失去输出的精度。下面是一些解决方案。

解决方案 1(使用 BigInteger):

    BigInteger b1 = new BigInteger("22");
BigInteger b2 = new BigInteger("7");
double d = b1.doubleValue() / b2.doubleValue();
System.out.println(d);

解决方案 2(使用 BigDecimal ,已定义精度)
    BigDecimal b1 = new BigDecimal("22");
BigDecimal b2 = new BigDecimal("7");
BigDecimal b3 = b1.divide(b2, MathContext.DECIMAL32);
System.out.println(b3);

方案三(使用 BigDecimal,自控精度)

引用 Jason Hoetger 给出的解决方案

关于java - 在java中,如何划分两个BigIntegers并将值存储在double中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39762172/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com