2

この作品のようなものを見て、どういうわけか驚いています:

float f = 10.25f;
int i = (int)f;
// Will give you i = 10

ゲインは何ですか?

OTOH 10.25 は 10 とはまったく異なるものであり、同意されるでしょう。このようなソフトな変換から悪いことが起こる可能性があります。

代わりにどの言語でエラーが発生しますか?

次のようなものを期待します: "Error: Can't represent 10.25 as an integer".

その間に与えられた回答へのWRT:はい、「ラウンド」のような機能のように信頼できると考えられるかもしれません。しかし、キャストから期待されるデータ/情報の整合性へのストレートな WRT ではありません。

おそらく、デフォルトで「int」の動作になる「truncate」関数がより良い選択になるでしょうか?

4

4 に答える 4

3

それはまさに

(int)f

これは、プログラマーが自分のしていることを認識していることを示していますが、ほとんどのプログラミング言語では、小数部分を静かに切り捨てて残りを整数に格納することは禁止されています。

ちなみに、小数部分が切り捨てられているだけではありません。また、浮動小数点数が非常に大きな値を持つ可能性があるため、int として表現できない可能性もあります。検討:

(int) 1e20f
于 2013-11-14T10:34:52.623 に答える
1

整数への変換は、複雑なデータを操作しているが、最終的にはこのデータを int に変換して何らかの処理を行う必要がある場合に役立ちます。配列のオフセット、または画面上のピクセルを考えてください

画面上に円を描くことを考えてください。ピクセルの一部は存在しません (したがって座標は int です) が、int だけでピクセルの座標を計算することはできません (sinus は pi やその他の float で機能します)。

于 2013-11-14T11:33:20.657 に答える