Delphi中如何验证一个double类型是否完全为整数?

更新于
2026-10-05 02:01:05
0阅读来源:SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计361个文字,预计阅读时间需要2分钟。

我需要测试double是否为整数。基本来说,这是规则的一个例子:+5.0 真实 +5.2 假。为了做到这一点,我做一个if(结果mod 1)=0,然后看看它是否返回true或false。考虑结果可能是双重的。顺便说一句,编译器给我。

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

> 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等数字对此进行了测试,代码是正确的.我看到你的双数字中有一些数字,所以不应该有问题.我不确定该功能有多准确,但在这种情况下你不必担心.

本文共计361个文字,预计阅读时间需要2分钟。

我需要测试double是否为整数。基本来说,这是规则的一个例子:+5.0 真实 +5.2 假。为了做到这一点,我做一个if(结果mod 1)=0,然后看看它是否返回true或false。考虑结果可能是双重的。顺便说一句,编译器给我。

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

> 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等数字对此进行了测试,代码是正确的.我看到你的双数字中有一些数字,所以不应该有问题.我不确定该功能有多准确,但在这种情况下你不必担心.