Delphi - 比较浮点值

pau*_*ohr 0 delphi floating-point compare numbers decimal

我有一个返回浮点值的函数,如下所示:

1.31584870815277
Run Code Online (Sandbox Code Playgroud)

我需要一个函数,它返回TRUE,比较值和点后面的两个数字.

例:

if 1.31584870815277 = 1.31 then ShowMessage('same');
Run Code Online (Sandbox Code Playgroud)

对不起我的英语不好.

有人能帮我吗?谢谢

Dav*_*nan 11

你的问题规范有点模糊.例如,您声明要比较小数点后的值.在这种情况下,这意味着你希望1.31被认为等于2.31.

除此之外,您还需要指定要考虑的小数位数.像1.31这样的数字在二进制浮点中不能完全表示.根据您使用的类型,最接近的可表示值可能小于或大于1.31.

我的猜测是你想要做的是使用round到最近,到特定的小数位数.为此,您可以使用本机的SameValue功能Math.在你的情况下你会写:

SameValue(x, y, 0.01)
Run Code Online (Sandbox Code Playgroud)

测试平等达到容忍度0.01.

这可能不是您正在寻找的,但从您的问题中可以清楚地看出,您还不确切地知道您在寻找什么.如果您的需求与值的十进制表示特别相关,则考虑使用十进制类型而不是二进制类型.在德尔福那将是Currency.