gpt4 book ai didi

c - 将大整数打印为指数函数

转载 作者:太空宇宙 更新时间:2023-11-04 02:41:45 25 4
gpt4 key购买 nike

我想以指数形式打印一个巨大的整数。有点像

Value 123456789012 as exp is 1.2345*10^12.

是否有任何 gmp_printf 格式来处理这个问题,或者我应该先用一些 mpz_get_exp 函数计算它?

mpz_t integer;
mpz_t exponent;
mpf_t top;

mpz_inits(integer, exponent, null);
mpf_init(top);

mpz_set_str(integer, "123456789012", 10);

???

gmp_printf("Value %Zd as exp is %.4Ff*10^%Zd",
integer, top, exonent);

最佳答案

%Fe%FE 格式说明符需要一个 mpf_t 类型的对象。因此,您需要为 gmp_printf() 创建临时变量。例如:

#include <stdio.h>
#include <gmp.h>

int main(void)
{
mpz_t integer;

mpz_init_set_str(integer, "123456789012", 10);
/* Print integer's value in scientific notation */
{
mpf_t tmp_float;
mpf_init(tmp_float);
mpf_set_z(tmp_float, integer);
gmp_printf("%.4FE\n", tmp_float);
mpf_clear(tmp_float);
}
mpz_clear(integer);
return 0;
}

结果:

1.2346E+11

或者您可以通过 mpz_get_d 将其导出到 POD double 并通过普通 printf() 打印:

#include <stdio.h>
#include <gmp.h>

int main(void)
{
mpz_t integer;

mpz_init_set_str(integer, "123456789012", 10);
printf("%.4E\n", mpz_get_d(integer));

mpz_clear(integer);
return 0;
}

我更喜欢第二种方法,因为它看起来更干净。

关于c - 将大整数打印为指数函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31189112/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com