如果我有
f: Single;
F := 0;
if F <> 0 then raise exception.create('xxx');
這種比較在任何平臺上都能正常作業嗎?我的意思是我需要在某些平臺上做 round(f) <> 0 嗎?我知道在 Windows 上做 F <> 0 很好,因為 0 是一個整數,但我對其他平臺很好奇
uj5u.com熱心網友回復:
在標題中,你要求一個一般性的答案,在正文中,你要求一個具體的案例。我不確定您對哪個答案真正感興趣。但作為一般情況,答案是“視情況而定”。
正如其他人所評論的那樣,您的具體示例永遠不會引發,但這并不意味著將浮點數與 0 進行比較是安全的。
拿這個例子:
procedure TForm5.Button1Click(Sender: TObject);
var
F: single;
begin
F := (7 / 10);
F := F - 0.7;
if F <> 0 then
raise Exception.Create('Error Message');
end;
這將(據我所知)總是加注。
另外,round(f) <> 0這不是解決這個問題的方法。Comparevalue(F, 0, ????) <> EqualsValue將會。
至于這一切的“為什么”,這已經在 SO 上得到了回答(可能很多次)。(你可以從這里開始)
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/503924.html
上一篇:即使正確設定了Inc檔案,FastMM也不會顯示泄漏
下一篇:設計時的表單顏色不受影響
