e,作为数学常数,是自然对数函数的底数,亦称自然常数、自然底数,或是欧拉数(Euler’s number),以瑞士数学家欧拉命名;还有个较少见的名字纳皮尔常数,用来纪念苏格兰数学家约翰·纳皮尔引进对数。它是一个无限不循环小数,数值约是(小数点后20位,OEIS A001113):e = 2.71828182845904523536 ⋯
下面是其中的一个定义:
我们直接上代码, 计算 e 值。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
#include <iostream> #include <mpir.h> #include <mpirxx.h> using namespace std; void main() { // e = 1/0! + 1/1! + 1/2! + 1/3! + 1/4! + ... mpf_class D; mpf_class E; mpf_class F; mpz_class I; mpz_class N; mp_bitcnt_t prec; mp_exp_t exp; char* Val; prec = 100; mpf_set_prec(D.get_mpf_t(), prec); mpf_set_prec(E.get_mpf_t(), prec); mpf_set_prec(F.get_mpf_t(), prec); E = 1; F = 1; N = "25"; for (I = 1; I <= N; I++) { F *= I; D = 1 / F; E += D; exp = 0; Val = mpf_get_str(NULL, &exp, 10, 0, E.get_mpf_t()); cout << I << "," << "e:" << Val << ",exp:" << exp << endl; free(Val); } } |
计算的结果是
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
1,e:2,exp:1 2,e:25,exp:1 3,e:2666666666666666666666666666666666666665,exp:1 4,e:2708333333333333333333333333333333333329,exp:1 5,e:2716666666666666666666666666666666666662,exp:1 6,e:271805555555555555555555555555555555555,exp:1 7,e:2718253968253968253968253968253968253963,exp:1 8,e:2718278769841269841269841269841269841264,exp:1 9,e:2718281525573192239858906525573192239851,exp:1 10,e:2718281801146384479717813051146384479707,exp:1 11,e:2718281826198492865159531826198492865147,exp:1 12,e:2718281828286168563946341724119501897265,exp:1 13,e:2718281828446759002314557870113425668964,exp:1 14,e:271828182845822974791228759482727736694,exp:1 15,e:2718281828458994464285469576474867480137,exp:1 16,e:271828182845904225905879345032784186221,exp:1 17,e:2718281828459045070516047795848605061153,exp:1 18,e:2718281828459045226708117481710869683316,exp:1 19,e:2718281828459045234928752728335199400269,exp:1 20,e:2718281828459045235339784490666415886116,exp:1 21,e:2718281828459045235359357431729807147345,exp:1 22,e:2718281828459045235360247110869052204673,exp:1 23,e:2718281828459045235360285792570758511511,exp:1 24,e:2718281828459045235360287404308329607628,exp:1 25,e:2718281828459045235360287468777832451471,exp:1 |
上面的exp 表示小数点的位置,1位,计算的结果为2.xxxx.
可以修改N和prec的值,来获取更大的精度值。