-1

当我想使用大小数字时,我必须如何在 C 中求和/比较值?

#include <stdio.h>
#include <math.h>

int main(void) {
    if (1.0 + (1/pow (10,50)) == 1.0)
        printf("true");
    else
        printf("false");
    return 0;
}

如何让它返回false?

4

2 回答 2

3

您不能使用标准 C 类型使其返回 false。您需要使用高精度浮点库。

于 2012-05-30T04:30:19.820 回答
1

在 C99 中,您可以获得的最高精度是long double,在大多数现代 C 编译器/体系结构上,它是 64 位或 128 位 IEEE 浮点数。如果您想要更精确,请考虑使用一些库,例如 GCC 使用的库:

GMP (http://gmplib.org/) - 整数和浮点数的任意精度算术;MPFR (http://www.mpfr.org/) - 多精度浮点库(声称可以正确舍入) MPC (http://www.multiprecision.org/index.php?prog=mpc) 任意精度复数数库。

于 2012-05-30T04:44:22.680 回答