初級 › int同士の割り算で小数点以下が消えるバグ › パターン1
int同士の割り算で小数点以下が消えるバグ
int型同士の割り算は小数点以下を切り捨てたint型の結果になるバグです。
1 #include <iostream> 2 #include <iomanip> 3 int main() { 4 int total = 7; 5 int count = 2; 6 double avg = total _______ count; ^ 7 std::cout << std::fixed << std::setprecision(1) << avg << std::endl; 8 return 0; 9 }
出力: 3.0期待: 3.5
空欄を埋めてコンパイル・実行を通す
int同士の割り算は小数点以下を切り捨てたint型の結果になります。その結果をdoubleに代入しても、切り捨てはすでに終わったあとで元には戻りません。片方をdoubleにキャストしてから割る必要があります。
次の問題