シンプルなメインに次のソースコードがあります。
int main(int argc, char** argv)
{
double x = atof(argv[1]);
double y = atof(argv[2]);
double res = x + std::floor((y - x) * .5 * 100 + .5)*0.01;
std::cout << res << std::endl;
}
上記を75.2175.22で実行すると、75.22になりますが、7.21と7.22で実行すると、7.21になります。これらの数値は両方とも0.01異なるので、なぜこれが起こっているのかわかりませんか?