我是 C++ 编程新手。我想知道 C++ 中以下简单操作的结果会获得什么可能的机器值:
int a = 3;
double inv_a;
inv_a = (double) 1 / (double) a;
std::cout << "a*(1/a) = " << std::setprecision(30) << (double) a * inv_a << std::endl;
Run Code Online (Sandbox Code Playgroud)
例如,我想知道是否输出
(double) a * inv_a
Run Code Online (Sandbox Code Playgroud)
对于 a 的任何可能的 int 值,作为双精度值始终大于或等于 1.000...0。是否有可能获得严格小于 1 但非常接近它的值,例如 0.999...?当我将结果转换为 int 时,我正在考虑这个问题。先感谢您。
我的实验总是给出准确的 1。