Delphi-比较浮点值
我有一个函数,它返回如下的浮点值:Delphi-比较浮点值,delphi,floating-point,numbers,compare,decimal,Delphi,Floating Point,Numbers,Compare,Decimal,我有一个函数,它返回如下的浮点值: 1.31584870815277 我需要一个函数,通过比较值和点后的两个数字来返回TRUE 例如: if 1.31584870815277 = 1.31 then ShowMessage('same'); 对不起我的英语 有人能帮我吗?谢谢您的问题说明有点模糊。例如,您声明要比较小数点后的值。在这种情况下,这意味着您希望1.31被视为等于2.31 在此之上,您需要指定要考虑多少小数位数。像1.31这样的数字不能用二进制浮点精确表示。根据您使用的类型,可以小
1.31584870815277
我需要一个函数,通过比较值和点后的两个数字来返回TRUE
例如:
if 1.31584870815277 = 1.31 then ShowMessage('same');
对不起我的英语
有人能帮我吗?谢谢您的问题说明有点模糊。例如,您声明要比较小数点后的值。在这种情况下,这意味着您希望1.31被视为等于2.31
在此之上,您需要指定要考虑多少小数位数。像1.31这样的数字不能用二进制浮点精确表示。根据您使用的类型,可以小于或大于1.31
我猜您希望做的是使用四舍五入,精确到小数点后的特定数字。为此,您可以使用数学
单元中的函数。在你的情况下,你会写:
SameValue(x, y, 0.01)
测试公差小于等于0.01
的相等性
这可能不是你想要的,但从你的问题中可以清楚地看出,你还不知道你想要的是什么。如果您的需求与值的小数表示具体相关,那么考虑使用十进制类型而不是二进制类型。在Delphi中,如果速度不是最高优先级,则可以使用字符串转换:
if Copy(1.31584870815277.ToString, 1, 4) = '1.31' then ShowMessage('same');
你想怎么转?显然,您的示例不是遵循标准的舍入规则,而是截断规则。你确定这就是你想要的吗?(
1.315
=1.32
不是1.31
)