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"
起作用的原因。
我的代码不起作用似乎很奇怪,我正在尝试从用户那里获取输入,并将其分配给 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"
起作用的原因。