-1
我有一個返回這樣的浮點值的函數:德爾福 - 比較浮點值
1.31584870815277
我需要返回TRUE比較值和點之後的兩個數字的功能。
例子:
if 1.31584870815277 = 1.31 then ShowMessage('same');
對不起,我的英語水平。
有人可以幫助我嗎?謝謝
我有一個返回這樣的浮點值的函數:德爾福 - 比較浮點值
1.31584870815277
我需要返回TRUE比較值和點之後的兩個數字的功能。
例子:
if 1.31584870815277 = 1.31 then ShowMessage('same');
對不起,我的英語水平。
有人可以幫助我嗎?謝謝
您的問題規範有點含糊。例如,您聲明您要比較小數點後的值。在這種情況下,這意味着你希望1.31被認爲等於2.31。
最重要的是,您需要指定要考慮的小數位數。像1.31這樣的數字不能完全用二進制浮點表示。根據您使用的類型,closest representable value可能小於或大於1.31。
我的猜測是,你想要做的就是使用舍入到最近的特定小數位數。爲此,您可以使用Math
單元的SameValue
功能。在你的情況下,你會寫:
SameValue(x, y, 0.01)
測試等於高達0.01
的容差。
這可能不是你正在尋找的東西,但是從你的問題中可以清楚地知道你還不知道你在找什麼。如果您的需求特別與值的十進制表示形式相關,那麼請考慮使用十進制類型而不是二進制類型。在德爾福,這將是Currency
。
你想如何四捨五入?顯然你的例子不是遵循標準的舍入規則,而是截斷。你確定這是你想要的嗎? ('1.315' ='1.32'不是'1.31') –