我正在编写一段代码,其中我必须将double值转换为float值。我正在使用boost::numeric_cast进行此转换,这将提醒我任何上溢/下溢。但是,我也很想知道该转换是否导致某些精度损失。
例如
double source = 1988.1012;
float dest = numeric_cast<float>(source);
产生目标值1988.1的目标
有什么方法可以检测到这种精度损失/舍入
最佳答案
您可以将浮点数放回原来的两倍,然后将此倍数与原始浮点数进行比较-这样可以让您公平地判断是否存在精度损失。