从abs(double)而不是int获得double结果

Getting double result from abs(double) instead of int

本文关键字:double int 获得 结果 abs      更新时间:2023-10-16

我需要计算两个double值之差的绝对值,并得到double结果。相反,我得到了一个int

#include <typeinfo>
// ...
printf(
    "a:%s b:%s delta:%s abs:%sn",
    typeid(a).name(),
    typeid(b).name(),
    typeid(a - b).name(),
    typeid(abs(a - b)).name()
);
// Prints: a:d b:d delta:d abs:i

如果减法的结果已经是一个双,为什么abs不使用double abs (double x);签名?事实上,它怎么可能返回一个整数呢?最重要的是,如何强制它返回double

如果有区别,ab实际上是myData.m_latotherData.latitude()

要避免与无意导入的C标准库标头发生冲突,请改用std::abs。正如您所知,这是C++版本,并且严重过载。

否则,请使用C标准库中的fabs

在C++17之前,浮点和积分的abs在不同的标头中定义(分别为cmathcstdlib(。