首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我什么时候使用fabs,什么时候使用std::abs就足够了?

我什么时候使用fabs,什么时候使用std::abs就足够了?
EN

Stack Overflow用户
提问于 2010-06-25 21:02:15
回答 4查看 67.1K关注 0票数 102

我假设在使用math.habsfabs的行为是不同的。但是当我只使用cmathstd::abs时,我必须使用std::fabsfabs吗?或者这还没有定义?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-06-25 21:06:31

在C++中,使用std::abs总是足够的;它对所有数值类型都是重载的。

在C中,abs只适用于整数,而浮点值需要使用fabs。这些在C++中都是可用的(以及所有的C库),但是不需要使用它们。

票数 126
EN

Stack Overflow用户

发布于 2012-12-10 06:44:47

对于doublefloat参数,仍然可以使用fabs。我更喜欢这样,因为它可以确保,如果我意外地将std::abs上剥离,浮点输入的行为将保持不变。

我刚刚花了10分钟来调试这个问题,因为我自己的错误是使用abs而不是std::abs。我假设using namespace std;会推断出std::abs,但它没有,而是使用了C版本。

无论如何,我相信使用fabs而不是abs作为浮点输入是一种很好的方式,可以清楚地记录您的意图。

票数 23
EN

Stack Overflow用户

发布于 2016-07-14 15:19:26

显式推荐将std::fabs用于浮点输入还有另一个原因。

如果您忘记包含,那么您的std::abs(my_float_num)可以是std::abs(int)而不是std::abs(float)。这很难被注意到。

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3118165

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档