首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >c++浮点型到布尔型的转换

c++浮点型到布尔型的转换
EN

Stack Overflow用户
提问于 2009-12-28 22:05:18
回答 5查看 12.1K关注 0票数 1

我正在看一些第三方代码,我不确定一行代码到底在做什么。我不能发布确切的代码,但它是这样的:

代码语言:javascript
运行
复制
bool function(float x)
{
float f = doCalculation(x);
return x > 0 ? f : std::numeric_limits<float>::infinity();
}

这显然抛出了来自编译器的关于转换float->bool的警告,但是实际的行为是什么呢?可视化C++如何将浮点数转换为布尔值?至少我应该能够取代那个讨厌的无穷大。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2009-12-28 22:09:31

我认为这是一个错误。该函数应该返回一个浮点数。这在我看来是合乎逻辑的。

将float转换为bool与float != 0相同。然而,由于精度的原因,严格比较两个浮点并不总是如您所期望的那样。

票数 26
EN

Stack Overflow用户

发布于 2009-12-28 23:29:27

如果一个浮点型的==是0.0f,那么它就会被转换成false,但是要注意精度!否则它将被转换为true --如果它不是精确的0.0f,它也将是true!Inifinity也将转换为true。正如David Thornley提到的,你的例子是非常糟糕的代码。

票数 2
EN

Stack Overflow用户

发布于 2009-12-28 22:09:50

我一般是这样做的

代码语言:javascript
运行
复制
return x != 0;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1969620

复制
相关文章

相似问题

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