- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:教えてください)
case4をキャストしたい方法と注意点
このQ&Aのポイント
- case4をキャストする方法と注意点について教えてください。
- case4をキャストするにはどこにdoubleをつければよいのか教えてください。
- josan(na/nb)の前にdoubleをつけてもうまく表示されません。どこにdoubleをつければよいのでしょうか。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
まずご質問の趣旨を確認させてください。 たとえば整数Aに10、整数bに3を入力して、4(除算)のときに、 10/3は、3.3333333です。 のように表示させたい。しかし case 4: printf("%d/%dは、%fです。\n", na, nb, (double)josan(na,nb)); break; としても 10/3は、3.00000000です。 のように小数点以下が切り捨てられてしまう。 ということでよろしいでしょうか? そうだとして回答します。 int josan(int a, int b) { return(a/b); } を double josan(int a, int b) { return((double)a/b); } とすればいいとおもいます。case 4: の行はもとのままです。 ポイントは二つ、 (1)josan() の戻り値を、整数型 int ではなく浮動小数点型 double とする。 でないと、下記(2)で、中身(除算結果)が double になったとしても、戻るときに整数化(たぶん)されてしまいます。 (2)整数型同士の加減乗除は整数型になる。一方でも浮動小数点型なら浮動小数点型になる。 そこで return のところで a をキャストするわけです。 ( return((double)a/(double)b); return(a/(double)b); でも結果は同じはず)