これらの線は同じですか?
float a = 2.0f;
と
float a = 2.000000f;
はい、そうです。使用する表現に関係なく、コードがコンパイルされると、数値は一意のバイナリ表現に変換されます。数値を表すために最近のコンピュータで使用されているIEEE754binary322
標準で表す方法は1つだけです。float
この問題に関してC99規格が述べているのは、これだけです(セクション6.4.4.2)。
10進数の浮動定数の場合、結果は、実装で定義された方法で選択された、最も近い表現可能な値、または最も近い表現可能な値に直接隣接するより大きなまたはより小さな表現可能な値のいずれかになります。
「実装定義」についてのそのビットは、技術的には実装がそれぞれの場合で異なることを行うことを選択できることを意味します。実際には、2のような値では奇妙なことは何も起こりません。
C規格はIEEE-754を必要としないことを覚えておくことが重要です。
はい、同じです。
簡単なチェック: http ://codepad.org/FOQsufB4
int main() {
printf("%d",2.0f == 2.000000f);
}
^ 1を出力します(true)
はい確かに、右側の余分なゼロは無視され、左側のゼロと同じです。