0

キャストがいつデータの損失を引き起こし、どのように機能するかを理解しようとしています。したがって、次の例では、データの損失があるかどうか、またある場合はその理由を理解しようとしています: ( i - int(4),f - float(4),d-double(8))

i == (int)(float) i; // sizeof(int)==sizeof(float) <- no loss
i == (int)(double) i; // sizeof(int)!=sizeof(double) <- possible loss
f == (float)(double) f;// sizeof(double)!=sizeof(float) <- possible loss
d == (float) d;// sizeof(double)!=sizeof(float) <- possible loss

活字サイズのみに基づいて答えれば十分ですか?(+ round )

4

4 に答える 4

3

32 ビットの int と通常の 4 および 8 バイトの IEEE-754 float/double を想定すると、次のようになります。

i == (int)(float) i;     // possible loss (32 -> 23 -> 32 bits)
i == (int)(double) i;    // no loss (32 -> 52 -> 32 bits)
f == (float)(double) f;  // no loss (23 -> 52 -> 23 bits)
d == (float) d;          // possible loss (52 -> 23 -> 52 bits)

int の精度は 32 ビット、float は 23 ビット、double は 52 ビットであることに注意してください。

于 2013-11-08T06:18:13.660 に答える
1

データの損失を考慮する必要があるのは、型の変数を格納するために割り当てられたメモリだけではありません。一般に、四捨五入する方法と、オーバーフローが発生した場合に CPU が数値データを処理する方法は、検討したい他の側面です。

于 2013-11-08T06:21:35.203 に答える
0

レポートのsizeofメモリ内のサイズが同じであっても、データが失われるわけではありません。

0.5 を検討してください。

float には格納できますが、integer には格納できません。

したがって、データの損失。

つまり、そのケーキの 0.5 が欲しいです。それを整数として表すことはできません。何も食べないか、たくさんのケーキを手に入れましょう。ヤム

于 2013-11-08T06:18:34.880 に答える
0

なぜ整数?たとえば、整数のみが必要な場合があるためですID_num

なぜ浮くの?実数の例に取り組む必要があるかもしれないので% calculations

なぜ二重?float サイズに収まらない実数がある場合

于 2013-11-08T06:23:45.460 に答える