-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 に答える