gpt4 book ai didi

c++ - 近似 e - 获得尽可能多的精度数字

转载 作者:行者123 更新时间:2023-11-28 03:39:18 29 4
gpt4 key购买 nike

我一直在尝试使用以下代码使用级数表示来近似 e 以获得尽可能多的精度数字,但无论我计算多少项,精度数字的数量似乎都保持不变。即:

2.71828198432922363281250000000000000000000000000000

是我的方法错了吗?这是代码:

  1 #include <stdio.h>
2 #include <iostream>
3 #include <math.h>
4 using namespace std;
5
6 float factorial (float a)
7 {
8 if (a > 1)
9 {
10 return (a * factorial (a-1));
11 } else
12 {
13 return 1;
14 }
15 }
16
17 int main()
18 {
19 float sum = 0;
20 int range=100000;
21
22 for (int i=0; i<=range;i++)
23 {
24 sum += pow(-1,i)/factorial(i);
25 }
26 sum = pow(sum,-1);
27 printf("%4.50f\n", sum);
28 }

最佳答案

要获得更精确的数字,您应该编写存储更多数字(例如 1000 位)的数据类。最难的部分是编写 +、-、*、/操作。

如果您只是想尝试数学公式,您可以选择另一种语言,例如 Python。它具有Decimal、Fraction等数据类型,可以进行更精确的计算。

我喜欢数学,所以我写了一个 python 脚本来测试公式:

from decimal import Decimal, getcontext
prec = 100
getcontext().prec = prec

fac = Decimal(1)/2
sum = Decimal(0)
eps = Decimal(0.1)
eps = eps**prec

realE = '2.71828182845904523536028747135266249775724709369995'

i = 3
while 1:
ds = fac - fac/i
sum += ds
if ds < eps: break
fac /= i * (i+1)
i += 2

print 'After %d iteration:' % i
print realE
print str(1/sum)

结果如下:

After 71 iteration:
2.71828182845904523536028747135266249775724709369995
2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166429

关于c++ - 近似 e - 获得尽可能多的精度数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9854207/

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