簡體   English   中英

為什么說真假?

[英]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 =(5.41,4)的vy = 4,另一個是min =(4,4)的min.y = 4,這是我比較兩個相等的數字時的奇怪情況。案件被正確執行。 我在(4> = 4)(vy> = min.y)上總是錯誤的。 可能是什么問題?

real_t被定義為UPD的兩倍:這是用C ++編寫的

顯然(您沒有給出可復制的示例),您正在將浮點數與==進行比較。

除非這些數字恰好是整數值,否則這不是一個好主意,對於初學者來說,這通常不是一個好主意。

兩個浮點值可能看起來是相等的,例如,當您不要求提供其他小數位時,它們會給出相同的表示形式,而實際上,它們的差值在一些其他方面卻微不足道。

在過去,遇到此問題的初學者曾經被稱為“每個科學家都應該知道的有關浮點數的知識”(或大約有關易失性記憶的標題)。

在過去的幾年中,我因提供該參考文獻而受到批評,因為據稱對於當今的學生來說,真正的技術知識等太難了。 人們提出了更容易理解的替代方案,類似於Wikipedia的簡單版。 但是,我不記得其中任何一個。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM