• ベストアンサー

プログラム内での計算

プログラム内での計算 情報処理試験やオープンソースのコードに書かれている計算式について分からないことがあります。 時々、 int sample = ((100*100) / temp) * temp; といった計算式を見ます。 この式では分母がtempの分数にtempをかけているのでtempが打ち消しあっていると思うのですが・・・。 何かこのtempには意味があるのでしょうか? また、この式でtempがある場合とない場合では何が違うのでしょうか??

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

  • ベストアンサー
回答No.2

割り算は小数まで計算する場合と整数だけで計算する場合があると思います。そして、整数だけで計算する場合は商とあまりを出しますよね。int型の割り算は整数で割り算をするので/で演算をすると商を計算して、%で演算すると余りを計算するということになっています。 (100*100)/tempが余りがある計算だった場合、その商にtempを掛けるわけですから、当然結果が変わってきます。例えば、tempが3の場合、(100*100)/3はこの計算の商である3333で、それに3を掛けるので3333*3で9999となり、100*100にはなりません。 つまり、この計算は100*100に一番近いtempの倍数を出すのに使えます。

kk1159
質問者

お礼

なるほど! わかりました。 ご丁寧に例まで書いていただき、ありがとうございます。

その他の回答 (1)

  • edomin7777
  • ベストアンサー率40% (711/1750)
回答No.1

計算順序によっては、意味があります。 int型(整数型)の計算の場合、小数点以下が切り捨てられます。 例えば、「temp」がint型だった場合、 100*100 で10000。 これをtempで割るので、int/intで答えはint型。 小数点以下が切り捨てられた答えにtempを掛けることになります。

kk1159
質問者

お礼

解決しました。 ありがとうございます。

関連するQ&A