c - 如何计算 C 中欧拉数的 37 位小数?
问题描述
我有以下代码,它返回: 2.7182818284590455348848081484902650118 其中只有2.718281828459045是正确的,其余的都是错误的。
我正在使用以下参考:2.7182818284590452353602874713526624977 http://www.vaxasoftware.com/doc_edu/mat/nume15000.pdf
我的代码是:
#include "gmp.h"
#include <stdio.h>
#include <math.h>
#define EPSILON 1.0e-15
int main() {
unsigned long long fact = 1;
double e = 2.0, e0;
int n = 2;
do {
e0 = e;
fact *= n++;
e += 1.0 / fact;
}
while (fabs(e - e0) >= EPSILON);
printf("e = %.37f\n", e);
return 0;
}
如果有人可以帮助我,我将不胜感激。太感谢了!
解决方案
我的代码是:
#include "gmp.h"
仅包含此标头不会魔术般地使用多精度算术;您必须使用GNU MP 手册中记录的适当功能!
例如,您将使用
{
mpf_t x;
mpf_init2 (x, 100);
...
要初始化 100 位精度的浮点数 x
,并进行计算,您可以使用此处的函数,例如mpf_add
添加 2 个这样的变量。
推荐阅读
- java - 如何使用具有三个参数的收集方法,即“收集(供应商,累加器,组合器)”在列表中添加整数
- android - 有没有办法使用带有标头的 API 和 API KEY 使用 Volley 来开发 Android 应用程序?
- security - 使用 fastcgi 缓存时在 NGINX 中添加安全标头
- algorithm - DFS 是否为未加权的有向图生成 MST?
- php - Laravel cURL 错误 6:无法解析主机:oauth
- javascript - 以编程方式获取 Google Apps 脚本中触发器的执行时间
- node.js - 使用 .createServer 制作公共网站
- postgresql - pgadmin4 指定的用户不存在
- c++ - 如何以二进制模式读取并将信息传输到新文件
- c++ - 多态类的typeid,当给定一个派生类的指针时,说它是一个指向基类的指针!为什么?