首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GMP将mpz转换为mpf

GMP将mpz转换为mpf
EN

Stack Overflow用户
提问于 2010-01-24 08:49:29
回答 2查看 4.1K关注 0票数 4

我正在使用GMP,我希望能够快速地将mpz转换为mpf。我翻遍了图书馆,没能找到太多东西。我能想到的最好的事情是:

代码语言:javascript
复制
mpz_t x;
/* Insert code here that assigns some value to x */
char buf[SIZE];
gmp_sprintf(buf, "%Zd", x);
mpf_t y;
mpf_set_str(y, buf);

此解决方案需要在字符串之间进行重复转换。此外,它还受到SIZE的限制,我看不到有办法预先确定SIZE需要多大。有没有更好的方法来完成这个转换?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-01-24 08:56:11

使用mpf_set_z (mpf_t rop, mpz_t op)怎么样?

另外(我假设你已经这样做了)你的mpz和mpf变量需要用mpf_init(mpf_t x)mpz_init(mpz_t x)进行初始化。

所以你会这样做:

代码语言:javascript
复制
mpz_t x;
mpz_init(x);
/* Insert code here that assigns some value to x */
mpf_t y;
mpf_init(y);
mpf_set_z(y,x);
票数 8
EN

Stack Overflow用户

发布于 2010-01-24 10:13:28

哇,考虑到sprintf的坏名声,我很惊讶他们甚至包括了一个类似的函数。

mpz_sizeinbase可以用来计算需要多少空间来容纳整数的基数为10的表示。另一个回答是正确的,mpf_set_z是一种比将整数转换为基数10的字符串并将其读回浮点数的方法要好得多。

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

https://stackoverflow.com/questions/2125410

复制
相关文章

相似问题

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