当我想使用大小数字时,我必须如何在 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?
当我想使用大小数字时,我必须如何在 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?
您不能使用标准 C 类型使其返回 false。您需要使用高精度浮点库。
在 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) 任意精度复数数库。