首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MPFR未正确复制数据

MPFR未正确复制数据
EN

Stack Overflow用户
提问于 2013-12-17 19:32:58
回答 1查看 98关注 0票数 2
代码语言:javascript
复制
#include <stdio.h>
#include <gmp.h>
#include <mpfr.h>
#include <stdlib.h>
#include <math.h>
#include <limits.h>

mpf_t epi;

int main(int argc, char * * argv)
{
    mpf_t e;
    mpf_t pi;
    mpfr_t er;
    mpfr_t pir;
    FILE *a;
    FILE *b;

    a = fopen(argv[1], "r");
    b = fopen(argv[2], "r");
    mpf_set_default_prec(1024048);
    mpf_init(e);
    mpf_init(pi);
    mpfr_set_default_prec(1024048);
    mpfr_init(er);
    mpfr_init(pir);

    gmp_fscanf(a, "%Ff", &e);
    gmp_fscanf(b, "%Ff", &pi);
    fclose(a);
    fclose(b);

    mpfr_set_f(er, e, GMP_RNDN);
    mpfr_set_f(pir, pi, GMP_RNDN);

    gmp_printf("e: %.100Ff\np: %.100Ff\n", e, pi);
    mpfr_printf("e: %.100Ff\np: %.100Ff\n", er, pir);

}

代码似乎都是正确的,它应该将e复制到er,pi复制到pir。当我运行这个程序时,我得到的是:

代码语言:javascript
复制
Ethans-MacBook-Pro:epi phyrrus9$ ./epi a.txt b.txt 
e: 2.7182818284590452353602874713526624977572470936999595749669676277240766303535475945713821785251664274
p: 3.1415926535897932384626433832795028841971693993750806787344699335531291632367535989328301032625839375
e: 0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
p: 0.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000

我的问题是,我所使用的舍入模式有什么问题吗?因为第二个e和p不应该是零。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-17 21:42:33

复印机工作得很好,是印刷坏了。

如果您查看5.9.2手册,您会发现应该使用%Rf而不是为mpf_t保留的%Ff来指定mpfr_t值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20643061

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档