mpz_set_str 分配给一个数字后输出 0

mpz_set_str outputting 0 after assigning it to a number

我的代码不起作用似乎很奇怪,我正在尝试从用户那里获取输入,并将其分配给 mpz_t 以供以后计算,但是,只做一个简单的测试就可以了没有给我预期的结果。

mpz_t n;
mpz_init(n);
const char* num = "25.5";
mpz_set_str(n, num, 10);
mpz_out_str(stdout, 10, n);
printf("\n");
mpz_clear(n);

输出:

0
0
0
0
...

编辑:

上面代码中的 return 值为 -1,表示错误,但是将 num 更改为 25 可以正常工作并正确打印.

mpz_t 是一个整数。 “25.5”不是整数。这就是为什么 mpz_set_str() 对“25.5”失败但对“25”失败,正如您指出的那样。

mpf_t是浮点数,可以用mpf_set_str()设置为“25.5”。

mpz 前缀用于整数,它根本拒绝处理浮点字符串,甚至像 scanf 那样的第一位也不会,例如。这就是 "25" 起作用的原因。