次のコードはC言語と同じように動作しますが、なぜですか?ここでIEEE 754:どのように正確に機能しますか?
float x = 2147483647; //2^31
printf("%f\n", x); //Outputs 2147483648
は私の思考プロセスである:
2147483647 = 0 1001 1101 1111 1111 1111 1111 1111 111
(0.11111111111111111111111)base2 = (1-(0.5)^23)base10
=> (1.11111111111111111111111)base2 = (1 + 1-(0.5)^23)base10 = (1.99999988)base10
したがって、バック小数点にIEEE 754の表記に変換する:だから技術的に1.99999988 * 2^30 = 2147483520
を、Cプログラムは、右、2147483520をプリントアウトしておく必要があります?