为什么真的陈述是假的
Why true statement false?
我有一个类,向量,它继承自"原始向量">
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被定义为加倍UPD:这是用C++编写的
显然(您没有给出一个可重复的例子),您正在将浮点数与==
进行比较。
除非这些数字恰好是整数值,否则这是一个不好的想法,而对于初学者来说,这通常是一个糟糕的想法。
两个浮点值可能看起来是相等的,例如,当你不要求显示额外的小数时,它们给出相同的表示,而实际上它们在一些其他方面非常微不足道的数字上不同。
在过去,遇到这个问题的初学者通常被称为“每个科学家都应该知道的关于浮点数的知识";(或大约,易错记忆中的标题)。
在过去的几年里,我因为提供这种参考而受到批评,因为据称,真正的技术性东西对今天的学生来说太难了。人们提出了更容易消化的替代方案,有点像维基百科的简单版。然而,我一个都不记得了。
相关文章:
- 在决定是通过参考还是通过价值时,尺寸真的是一个问题吗
- 在'如果'陈述输出如何正确
- 字节真的是最小可寻址单元吗
- 为什么这个案例陈述需要一个"if else"而不仅仅是一个"if"?
- 如果我真的真的想从 STL 容器继承,并且我继承构造函数并删除新运算符,会发生什么?
- 如何在 std::vector 中找到<bool>哪些索引是真的?
- std::string 的对象真的可以移动吗?
- 在这种情况下,我真的复制了字节还是复制了字符?
- int8_t和uint8_t真的是整数吗?它们有什么用?
- 真的没有来自 std::string_view 的 std::string 的显式构造函数吗?
- 查找不等式为真的次数时出现问题
- 考虑到其他好处,关键字'auto'真的有助于简化调试C++吗?
- 有没有更好的方法来处理异常? try-catch块真的很丑
- 在为嵌套类定义行外友元时,我真的必须打破封装吗?
- 你如何理解"std: :forward is just syntactic sugar"?这是真的吗?
- "std::forward"和"std::move"真的不生成代码吗?
- VS 2017 和 2019 运行 c++ 真的很慢
- 结构和类在C++中真的等价吗?
- 指向数组unique_ptr在调用 release() 后会自动释放动态内存,这是真的吗?
- 为什么真的陈述是假的