• ベストアンサー

プログラミング

C言語のプログラミングで、四捨五入を作りたいのですが、ご教授いただけますか? また、良いサイトがあったら教えていただけますか?

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

  • ベストアンサー
  • sha-girl
  • ベストアンサー率52% (430/816)
回答No.2

>キャストとはどういった意味なのでしょうか? 型の変換です。 doubleの1.0とintの1では、データ的に互換性はありません。 (そのあたりは浮動小数点を調べてみてください) そこでint型=double型のような形だと型変換が行われるわけですが それをキャストといいます。 (int)とかすることで明示的にキャストを行う事ができます。 1の回答を元に説明しますと int b = (int)(d + 0.5); これはまず 0.50000001(double型) + 0.5(double型) => 1.0000001(double型) の計算が行われ この答え:double型をint型に変換しています。これがキャストです。 1.0000001(double型) => 1(int型) doubleからintへのキャストは小数部を切り捨てるという処理を行います。 そのため0.5を足してint型にキャストすることで四捨五入と同じ結果を得られるのです。 これを応用して任意の位の四捨五入も可能です。 0.5足して四捨五入というのはCでは常用するテクニックなので覚えておくとよいでしょう。

noname#40454
質問者

お礼

ありがとうございました!やってみました^^

その他の回答 (1)

回答No.1

double d = 0.50000001; int a = (int)d; /* a=0 */ int b = (int)(d + 0.5); /* b=1 */ でどうでしょう。intにキャストすると小数点以下は 切り捨てられるので、0.5を加えて次の整数を超えさ せるという方法です。 dが負の場合に負の方向に四捨五入するには、処理を 変えないとね。

noname#40454
質問者

お礼

ありがとうございました^^

noname#40454
質問者

補足

すいません、キャストとはどういった意味なのでしょうか?

関連するQ&A