正の double を最も近い整数に切り上げる関数が必要でした。aorund に潜む私はこの非常にエレガントな方法を見つけました
int x = floor(y + 0.5);
簡単なテストプログラムを書きました:
double a = 10.0;
for (int i = 0; i < 10; i++) {
cout << a << "\t" << a + 0.5 << "\t" << floor(a + 0.5) << endl;
a += 0.1;
}
しかし、私は奇妙な出力を受け取ります
10 10.5 10
10.1 10.6 10
10.2 10.7 10
10.3 10.8 10
10.4 10.9 10
10.5 11 10 <--- should be 11!
10.6 11.1 11
10.7 11.2 11
10.8 11.3 11
10.9 11.4 11
それはなぜですか?
よろしくルカ