Delphi检查double是否为整数

Raf*_*ssi 3 delphi

我需要测试double是否为整数.基本上这是规则的一个例子:

  • 5.0>是的
  • 5.2>错误

为了做到这一点,我做了一个if (result mod 1) = 0 then,看看它是否返回true或false.考虑到这result是双重的.顺便说一句,编译器给我这个错误:

[dcc32错误] Unit1.pas(121):E2015运算符不适用于此操作数类型

我怎么解决这个问题?请注意,我的数字是这种格式,##.#####所以我对浮点精度没有太多问题.

一般我会使用if (result % 1 == 0) {}但在Delphi中这不起作用.

Alb*_*ola 8

您可以使用fracDelphi的System单元中声明的函数.试试这段代码:

if ( frac(result) = 0 ) then
 ShowMessage('is zero')
else
 ShowMessage('is NOT zero');
end;
Run Code Online (Sandbox Code Playgroud)

有关该功能的详细信息,请查看文档.你在做什么是错的,因为在Delphi中,关键字mod只适用于整数.


注意.我用这样的数字测试了这个,45.1234代码是正确的.我看到你的双数字中有一些数字,所以不应该有问题.我不确定该功能有多准确,但在这种情况下你不必担心.