• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:教えてください)

case4をキャストしたい方法と注意点

このQ&Aのポイント
  • case4をキャストする方法と注意点について教えてください。
  • case4をキャストするにはどこにdoubleをつければよいのか教えてください。
  • josan(na/nb)の前にdoubleをつけてもうまく表示されません。どこにdoubleをつければよいのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
  • Ki4-U2
  • ベストアンサー率81% (364/446)
回答No.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); でも結果は同じはず)