違いは、次のコードのように、タイブレークに関する入力を与える戻り値にあります。
int main()
{
std::cout.precision(100);
double input = std::nextafter(0.05, 0.0) / 0.1;
double x1 = floor(0.5 + input);
double x2 = round(input);
std::cout << x1 << std::endl;
std::cout << x2 << std::endl;
}
出力:
1
0
しかし、最終的には結果が異なるだけで、好みの結果を選択します。のfloor(0.5 + input)
代わりにを使用している「古い」C / C ++プログラムがたくさんありますround(input)
。
歴史的な理由はありますか?CPUで一番安い?