我需要计算两个 double
值之间差的绝对值,并得到一个 double
结果。但是,我得到了一个 int
。
#include <typeinfo>
// ...
printf(
"a:%s b:%s delta:%s abs:%s\n",
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
呢?
如果这有什么区别的话,a
和 b
实际上是 myData.m_lat
和 otherData.latitude()
。
abs
函数。提供 [mcve] 会有所帮助。 - juanchopanza