小数点を格納するには?

解決


BOSS  2005-05-24 02:03:54  No: 57522

こんにちわ。

とても初心者的な質問で申し訳ないのですが
いろいろ試してもわからなかったので
教えていただけないでしょうか?

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++に限らない質問かとおもいますが
よろしくお願いします。


YuO  2005-05-24 02:07:40  No: 57523

floatまたはdoubleをCString::Formatに渡す場合,%fで受けます。

また,割り算を浮動小数点数で計算したい場合は,
600.0 / 360 (doubleの場合)
や,
600.0f / 360 (floatの場合)
などとします。

(float)600 / 360
というキャストもありだとは思いますけどね。


BOSS  2005-05-24 02:15:19  No: 57524

>YuOさん

すごくすばやい回答に驚きました。
なるほど、Fomatのところで値がかわってるわけですね
計算式とかではなく、表示するところでの
ミスだったと勉強になりました

ありがとうございますM(__)M


RAPT  2005-05-24 05:27:22  No: 57525

むしろ、この場合は、600 / 360 で int型になります。
この計算の商の型を明示的に示すのに、YuOさんがおっしゃられた方法を用います。

600はint型、360もint型で、int型 / int型 == int型 となるためです。
答えをfloat型やdouble型で得たい場合には、次のようにします。
float / float  or  
float / int  or 
int / float
(float を double に読み替えても可)


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

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






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