てか、intにcastするからだろ。

sprintf(buf, "%.0f", 18.4*100000);

or

std::cout << std::setprecision(0) << std::fixed << 18.4*100000 << std::endl;