こんにちわ。
とても初心者的な質問で申し訳ないのですが
いろいろ試してもわからなかったので
教えていただけないでしょうか?
Windows2000、MFC、ダイアログベース VC6.0です
void CWwwDlg::OnButton1()
{
// TODO: この位置にコントロール通知ハンドラ用のコードを追加してください
float Size;
Size = 600 / 360;
CString aaa;
aaa.Format("%d", Size);
AfxMessageBox(aaa);
}
↑のように簡単なサンプルをつくりました。
600÷360=5/3(少数では1.666・・)という
結果を変数に格納したいのですが
そのときの型はなにを指定すればいいのでしょうか?
また、600や360という数値自体も↑のままでは
NGなのでしょうか?
VC++に限らない質問かとおもいますが
よろしくお願いします。
floatまたはdoubleをCString::Formatに渡す場合,%fで受けます。
また,割り算を浮動小数点数で計算したい場合は,
600.0 / 360 (doubleの場合)
や,
600.0f / 360 (floatの場合)
などとします。
(float)600 / 360
というキャストもありだとは思いますけどね。
>YuOさん
すごくすばやい回答に驚きました。
なるほど、Fomatのところで値がかわってるわけですね
計算式とかではなく、表示するところでの
ミスだったと勉強になりました
ありがとうございますM(__)M
むしろ、この場合は、600 / 360 で int型になります。
この計算の商の型を明示的に示すのに、YuOさんがおっしゃられた方法を用います。
600はint型、360もint型で、int型 / int型 == int型 となるためです。
答えをfloat型やdouble型で得たい場合には、次のようにします。
float / float or
float / int or
int / float
(float を double に読み替えても可)
ツイート | ![]() |