2014-07-19 62 views
-1

我有一個返回這樣的浮點值的函數:德爾福 - 比較浮點值

1.31584870815277 

我需要返回TRUE比較值和點之後的兩個數字的功能。

例子:

if 1.31584870815277 = 1.31 then ShowMessage('same'); 

對不起,我的英語水平。

有人可以幫助我嗎?謝謝

+0

你想如何四捨五入?顯然你的例子不是遵循標準的舍入規則,而是截斷。你確定這是你想要的嗎? ('1.315' ='1.32'不是'1.31') –

回答

9

您的問題規範有點含糊。例如,您聲明您要比較小數點後的值。在這種情況下,這意味着你希望1.31被認爲等於2.31。

最重要的是,您需要指定要考慮的小數位數。像1.31這樣的數字不能完全用二進制浮點表示。根據您使用的類型,closest representable value可能小於或大於1.31。

我的猜測是,你想要做的就是使用舍入到最近的特定小數位數。爲此,您可以使用Math單元的SameValue功能。在你的情況下,你會寫:

SameValue(x, y, 0.01) 

測試等於高達0.01的容差。

這可能不是你正在尋找的東西,但是從你的問題中可以清楚地知道你還不知道你在找什麼。如果您的需求特別與值的十進制表示形式相關,那麼請考慮使用十進制類型而不是二進制類型。在德爾福,這將是Currency