gpt4 book ai didi

c++ - 为什么真陈述是假的?

转载 作者:行者123 更新时间:2023-11-28 05:20:23 25 4
gpt4 key购买 nike

我有一个类, vector 继承自“原始 vector ”

struct vector2raw {
real_t x, y;
};
struct vector2 : public vector2raw {
vector2() { null(); }
vector2(real_t x, real_t y) { this->x = x; this->y = y; }
vector2(const vector2 &v) { x = v.x; y = v.y; }
and so on

现在我想比较两个数字,一个 v.y=4 来自 v = (5.41, 4),另一个 min.y = 4 来自 min=(4,4)。这只是我比较两个相等时的奇怪情况数字,其他情况都正确执行。我总是在 (4>=4) ( v.y>=min.y) 上出错。可能是什么问题?

real_t 定义为 doubleUPD:这是用 C++ 编写的

最佳答案

显然(您没有提供可重现的示例)您正在将 float 与 == 进行比较。

除非这些数字恰好是整数值,否则这不是一个好主意,而且对于初学者来说,这通常不是一个好主意。

两个浮点值可能看起来相等,例如当您不要求显示额外的小数时,它们会给出相同的显示,而实际上它们在一些非常微不足道的数字上有所不同。

在过去,遇到这个问题的初学者通常被称为“每个科学家都应该知道的关于 float 的知识”(或者差不多,内存错误的标题)。

在过去的几年里,我因提供该引用而受到批评,因为据说真正的技术内容等对今天的学生来说太难了。人们还提出了更容易理解的替代方案,有点像维基百科的简单版本。但是,我一个也记不得了。

关于c++ - 为什么真陈述是假的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41648430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com