在我的代碼一點我設置一個Sprite的alpha 0.7AS3 - 爲什麼將DisplayObject的alpha設置爲0.7實際上會導致alpha設置爲0.69921875?
square.alpha = 0.7;
在我的代碼之後,我檢查這個字母在條件語句。
if (square.alpha == 0.7) {//do stuff}
我抓我的頭爲什麼它不工作,直到我做和的trace(square.alpha);
,而不是0.7
我0.69921875
。
這個數字(0.69921875
)對於我設置爲0.7的alpha的每個精靈實例都是相同的。
我做了一些測試,它看起來像只返回我將它們設置爲0
,0.5
,並1
相同值的alpha
唯一值。其他任何東西似乎都會返回一個非常接近我設置的數字,但不完全。例如0.2
會給我0.19921875
爲什麼會發生這種情況?
我使用Flex來編譯代碼,不確定是否對此有任何影響。
其實,檢查浮動等於零的點數總是返回假,除了0以及在某些情況下爲整數值。所以不要。 – Vesper
@Vesper什麼?不,它不。我明白你想說什麼,但這是陳述不正確和誤導。 –
@EthanWorley我的意思是,如果'a'是一個浮點數,而'b'是另一個浮點數,檢查'if(a == b)'將返回false,如果a或b被計算。其餘依賴於編譯器,例如Turbo Pascal和'{$ N +}',在var a:double上產生false;開始一個:= 2.0; writeln(a = 2.0);'但是如果擴展類型是真的。 – Vesper