从abs(double)而不是int获得double结果
Getting double result from abs(double) instead of int
我需要计算两个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
?
如果有区别,a
和b
实际上是myData.m_lat
和otherData.latitude()
要避免与无意导入的C标准库标头发生冲突,请改用std::abs
。正如您所知,这是C++版本,并且严重过载。
否则,请使用C标准库中的fabs
。
在C++17之前,浮点和积分的abs
在不同的标头中定义(分别为cmath
和cstdlib
(。
相关文章:
- C++在数学计算中将double转换为int
- 使输出流式处理运算符适用于 boost::variant<std::vector<int>、int、double 的正确方法是什么>
- 进程为包含double但不包含int的模板返回了-103741819(0xC0000005)
- 在C++中,为什么int可以使用new运算符初始化变量,而double不能
- 错误:"int pow(double,int)"与上一个声明int pov(double a,int
- 重载函数 int vs double
- 如何修复 E2015 "ambiguity between pow(double,double) and pow(float,int)"
- 用于检查"is int"/"is double"/等的模板函数
- 使用 double 在 C++ 中初始化 int 之间的差异
- 如何为包含map<int,*double>成员的类编写析构函数?
- 如何使用 JNI 将 double 和无符号 int 从本机 c 库返回到 java
- 对类似"struct {double, int}"对象使用reinterpret_cast进行对象访问
- 函数将double/int转换为字符串
- c++中从double/int/string到bool的自动转换
- 共享库从 void * "invalid conversion" 到 double(*) (int*) 时出错?
- 无效的数组下标类型' double[int] '
- 错误cv::SURF::SURF(double,int,int,bool,bool)在OpenCV和c++中实现SURF
- 我面临这个:我的程序中数组下标的无效类型"double[int]"
- 算术问题(double = int / int)
- 为什么从c++ 11中删除了std::pow(double, int) ?