キャスト-saka

(300/int);のような計算式で結果を小数点で出したい場合は→(300/(float)int);になる?
このあたりしっかり勉強しないとダメだ。
int1 = int2 * (300 / int3);で(300 / int3)の式が整数にならない時にエラーになってしまいます。どこでキャストすればいいのでしょうか?

    • -

コメントありがとうございます。

自分で書いておいて、どういう場面でこの問題にぶつかったのか忘れていました。思い出したので追記しておきます。
クリップボードにある画像データを自動的に規定の横幅に縮小してファイルに保存する。という処理を考えてました。
画像の横幅が300px以上の場合に動く処理で、(300/元画像の横幅)の計算で倍率がでる。と考えキャストが必要になりました。
縦サイズ=元画像の縦サイズ×(300/元画像の横幅);
intで返ってきて欲しかったので、simiさんに書いてもらったように
int1 = (int)(int2 * *1;
これでいってみます。

ちなみに現在は
int1 = int2 * (int)(300*100 / int3)/100;
みたいな感じで無理やり近似値を出しているような気がします。


(saka)

*1:double)300 / int3