Java 利用公式e = 1 + 1/1! + 1/2! + 1/3! + ... + 1/n! 求e 。结果保留十位小数
时间: 2024-09-30 07:02:13 浏览: 70
在Java中,你可以使用`BigDecimal`类来进行高精度计算,因为`double`或`float`类型的浮点数可能无法精确表示所有的小数。下面是使用`BigDecimal`计算自然对数(e)的一个示例:
```java
import java.math.BigDecimal;
import java.math.RoundingMode;
public class Main {
public static void main(String[] args) {
int n = 100; // 取n为100来得到接近e的结果
BigDecimal numerator = BigDecimal.ONE;
BigDecimal denominator = BigDecimal.ONE;
BigDecimal sum = BigDecimal.ZERO;
for (int i = 1; i <= n; i++) {
denominator = denominator.multiply(BigDecimal.valueOf(i));
BigDecimal term = numerator.divide(denominator, 10, RoundingMode.HALF_UP);
sum = sum.add(term);
numerator = BigDecimal.ONE;
}
BigDecimal eApproximation = sum.add(BigDecimal.ONE);
System.out.printf("e ≈ %.10f%n", eApproximation.doubleValue());
}
}
```
这段代码首先初始化了分子(numerator)、分母(denominator)以及初始的和(sum),然后遍历从1到n,计算每一项的倒数并加到总和上。最后,加上1得到自然对数e的近似值。
`RoundingMode.HALF_UP`用于四舍五入,保留十位小数。`doubleValue()`被用来转换成`double`类型以便输出。
阅读全文