gpt4 book ai didi

java - java中使用BigDecimal进行乘积计算

转载 作者:行者123 更新时间:2023-11-30 06:52:21 24 4
gpt4 key购买 nike

我正在尝试用 Java 进行乘积计算,但我似乎无法让它工作。我最初尝试使用 WolframAlpha,但超出了处理时间。

公式为:产品 (n/1220096908800), n=1..1220096908800

这是我尝试过的代码:

BigDecimal z = new BigDecimal("0");
BigDecimal n = new BigDecimal("1220096908800");

for (BigDecimal x = BigDecimal.valueOf(1); x.compareTo(n) < 0; x = x.add(BigDecimal.ONE)) {
z = (x.divide(n)).multiply(z);
}

z = z.setScale(8, BigDecimal.ROUND_DOWN);
DecimalFormat df = new DecimalFormat();
df.setMaximumFractionDigits(3);

df.setMinimumFractionDigits(6);

df.setGroupingUsed(false);
System.out.print(df.format(z));

想法?

编辑:这是我收到的错误

Exception in thread "main" java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result.
at java.math.BigDecimal.divide(BigDecimal.java:1690)
at javaapplication3.JavaApplication3.main(JavaApplication3.java:34)

最佳答案

您从 BigDecimal z = new BigDecimal("0"); 开始因此,如果将所有内容乘以 0,它始终会返回到 0。

另一个问题是您试图在某个时刻除以两个无法整除的 BigDecimal

http://docs.oracle.com/javase/7/docs/api/java/math/BigDecimal.html

if the exact quotient cannot be represented (because it has a non-terminating decimal expansion) an ArithmeticException is thrown.

如果我理解正确,你正在尝试计算的是:

1220096908800!/1220096908800^1220096908800

也许你应该看看 Stirling's approximation :

或者这个讲座如何:How Does n! Compare to n^n

关于java - java中使用BigDecimal进行乘积计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42512884/

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