float型とint型の計算


BOSS  2005-05-24 02:28:28  No: 57526

連続投稿っぽくなってしまい
また、初歩的な質問ですいません。

さきほどの質問に書くのを忘れたので新規投稿になって
しまうことをお許しくださいM(__)M

float Size;
Size = (float)600 / 360;
↑これでSizeには1.6666・・が入りますよね?

今度そのSizeを使って
int NewSize;
NewSize = Size * 64;
つまり、1.666・・・×64の計算を行い、整数部分だけを
取得しようと思ったのですが
(int)でキャストしようとすると怒られ(警告)ます
1.6・・・×64の答えをCStringにでもいれて文字列にし
Find関数とかで「.」の場所を取得
それより左側の文字列だけを切り取り
それを再びInt型に変換する!

というような面倒なことをしなくてはいけないのでしょうか?
たびたびの初歩的な質問で皆様に迷惑をおかけしますが
よろしくお願いいたします。


Blue  2005-05-24 02:48:42  No: 57527

>(int)でキャストしようとすると怒られ(警告)ます
はどのような警告が出るのでしょうか?

float Size;
Size = (float)600 / 360;
int NewSize;
NewSize = (int)Size * 64;

としてみましたが、問題なくコンパイルできます。

# すぐに質問しないで、デバッグしてみてはいかがでしょうか?
# 折角VisualC++という優れたIDE環境があるのでその機能をフルに使いましょう。
# (まぁ、私も使いこなせてはいないのですけど。)


Blue  2005-05-24 02:51:58  No: 57528

>NewSize = (int)Size * 64;
これちがってました。
NewSize = ( int )( Size * 64 );
ですね。

明示的にキャストしなくてもint型代入時にキャストされるっぽイですが。

# 割り算してから掛け算するならば、桁落ちを考えて一気に計算をしたほうが
# ベターなのでは?


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加