1. ホーム
  2. c++

[解決済み] 0.1 float は 0.1 double よりも大きい。falseになると思っていたのですが... [duplicate]

2023-01-01 07:12:54

質問

させる。

double d = 0.1;
float f = 0.1;

という式が必要です。

(f > d)

戻る true または false ?

経験的に、答えは true . しかし、私が予想したのは false .

として 0.1 は2進数では完全に表現できないのに対して、double は 15 から 16 の精度を持ち、浮動小数点以下の桁数は 7 に近いのに対して、ダブルは 0.1 .

について正確な説明が必要です。 0.1 .

どのように解決するのですか?

を変換するときの丸めモードによって、答えが変わってくると思います。 truedouble . float は24 バイナリ ビットの精度を持ち float は53です。2進法では、0.1です。

double

ということは、丸めれば アップ を24桁目で切り上げると、次のようになります。

0.1₁₀ = 0.0001100110011001100110011001100110011001100110011…₂
             ^        ^         ^   ^ 
             1       10        20  24

となり、正確な値やより正確な近似値である53桁の値よりも大きくなります。