Bug,單精確數,加1,不靈光了

轉載自LAVA網站的文章:Numeric Single Bug

有提到,在labVIEW中,單精確數,如果數值是16,777,216或36,564,036,那麼加1都不會有反應。

有興趣的人請參考這一個Bug檔案:Bug_Test.vi

不知道這個問題是不是所有程式語言都會發生?

這應該不算是bug啦~~

因為32Float共有32bit..其中最高位元為sign、bit30~23為指數、bit22~0為實數。

剛好16,777,216或36,564,036都超出實數可以表示範圍!這不是只有LV會這樣啦!

在32Float中超過實數所能代表的數值都只能用近似值代表!

例如:16777219 在 32Float 為 16777220 !!

http://babbage.cs.qc.edu/courses/cs341/IEEE-754.html

這個網址有詳細的說明!可以試用看看~~

Tomado38831.3775694444