我需要测试double是否为整数.基本上这是规则的一个例子: 5.0真正 5.2假 为了做到这一点,我做一个if(结果mod 1)= 0然后看看它是否返回true或false.考虑结果是双重的.顺便说一句,编译器给我
> 5.0>真正
> 5.2>假
为了做到这一点,我做一个if(结果mod 1)= 0然后看看它是否返回true或false.考虑结果是双重的.顺便说一句,编译器给我这个错误:
[dcc32 Error] Unit1.pas(121): E2015 Operator not applicable to this
operand type
我怎么解决这个问题?请注意,我的数字格式为##.#####所以我对浮点精度没有太多问题.
一般来说,我会使用if(结果%1 == 0){}但在Delphi中这不起作用.
您可以使用Delphi的System单元中声明的函数frac.试试这段代码:if ( frac(result) = 0 ) then ShowMessage('is zero') else ShowMessage('is NOT zero'); end;
有关该功能的详细信息,请查看documentation.你在做什么是错的,因为在Delphi中,关键字mod仅适用于整数.
注意.我用45.1234等数字对此进行了测试,代码是正确的.我看到你的双数字中有一些数字,所以不应该有问题.我不确定该功能有多准确,但在这种情况下你不必担心.