我需要测试double是否为整数。基本上这是规则的一个例子:
为了做到这一点,我会创建一个if (result mod 1) = 0 then
并查看它是返回true还是false。考虑result
是双倍的。顺便说一句,编译器给了我这个错误:
[dcc32错误] Unit1.pas(121):E2015操作员不适用于此 操作数类型
我该如何解决这个问题?请注意,我的数字采用这种格式##.#####
,因此我对浮点精度没有太多问题。
一般情况下,我会使用if (result % 1 == 0) {}
,但在Delphi中这不起作用。
答案 0 :(得分:8)
您可以使用Delphi的System单元中声明的函数mod
。试试这段代码:
45.1234
检查documentation以获取有关该功能的详细信息。你在做什么是错的,因为在Delphi中,关键字Simulator > Reset Content and Settings
仅适用于整数。
注意即可。我用$("ul.rock").click(function() {
console.log("rock clicked");
$("div.recordElement").toggle();
$("div.recordElement.pop").toggle();
$(".dropDownMenu").toggle();
});
等数字对此进行了测试,代码是正确的。我看到你的双数字中有一些数字,所以不应该有问题。我不确定该功能有多准确,但在这种情况下你不必担心。
答案 1 :(得分:0)
该比较将在Freepascal中有效。...
{$mode objfpc}{$R+}
uses math;
var
a:double = 5.2;
b:double = 5.0;
begin
writeln(a mod 1 = 0);
writeln(b mod 1 = 0);
end.
但这在Delphi中不起作用,我知道...
在Delphi中,应该使用fmod:
uses math;
var
a:double = 5.2;
b:double = 5.0;
begin
writeln(fmod(a,1) = 0);
writeln(fmod(b,1) = 0);
end.
答案 2 :(得分:-1)
也许你也想要关注漂浮不精确,这样你可以这样做:
if comparevalue(aValue, round(aValue), Tepsilon.vector) = 0 then
hasnodecimal
else
hasdecimal