微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我们如何正确确定两个浮点变量是否相等?

如何解决我们如何正确确定两个浮点变量是否相等?

我正在做一个测验,我想知道我是否能正确确定它。这些是选项:

See if a == b is true
Check if a - b == 0 is true
Check if ((a-b)*(a-b))/(a*a + b*b) is close to or is zero
Check a*b == a*a is true
None of the above

我尝试在 C++ 中比较 float 和 double 值,但没有成功使用任何给定的公式。我会说“以上都不是”,但我不知道它在其他语言中是如何工作的。我在某处读到 Java 中可能有所不同,但我会选择最后一个选项,因为通常其他答案是不正确的。你怎么看?

解决方法

浮点比较运算是“完美的”,因为当且仅当测试的关系为真时它才返回真。永远不会有任何舍入错误。有不正确的民间传说,您不能比较浮点数或需要使用一些容差来比较它们,但这是因为将操作数准备好进行比较的早期操作通常存在舍入错误,类似于 7/3 舍入到 2 的方式在整数算术中。

如果您的测验基于正确的浮点运算原则,那么“看看 a == b 是否为真”是正确的。否则,答案不清楚,测验可疑。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。