我正在编写一段代码,其中我必须将double值转换为float值。我正在使用boost::numeric_cast进行此转换,这将提醒我任何上溢/下溢。但是,我也很想知道该转换是否导致某些精度损失。

例如

    double source =  1988.1012;
    float dest = numeric_cast<float>(source);

产生目标值1988.1的目标

有什么方法可以检测到这种精度损失/舍入

最佳答案

您可以将浮点数放回原来的两倍,然后将此倍数与原始浮点数进行比较-这样可以让您公平地判断是否存在精度损失。

10-08 06:32