Yog*_*ora 7 c++ floating-point rounding-error rounding floating-accuracy
我正在编写一段代码,我必须将其从double转换为float值.我正在使用boost :: numeric_cast进行此转换,这将提醒我任何溢出/下溢.但是我也有兴趣知道这种转换是否会导致一些精确损失.
例如
double source = 1988.1012;
float dest = numeric_cast<float>(source);
Run Code Online (Sandbox Code Playgroud)
产生具有价值1988.1的dest
有没有什么方法可以检测到这种精确损失/舍入
float dest = numeric_cast<float>(source);
double residual = source - numeric_cast<double>(dest);
Run Code Online (Sandbox Code Playgroud)
因此,residual
包含您正在寻找的"损失".