【发布时间】:2017-03-22 06:47:20
【问题描述】:
我很惊讶地看到,浮点值可以除以 Delphi 中的 Variant。一个简单的例子说明可以做什么:
var
v: Variant;
begin
v := 2.3;
Tag := 5.1 div v; // 2
Tag := 5.1 mod v; // 1
Tag := 5.1 div 2; // [dcc32 Error] E2015 Operator not applicable to this operand type
Tag := 5.1 mod 2; // [dcc32 Error] E2015 Operator not applicable to this operand type
end;
看起来 Delphi 在执行 div/mod 操作之前将左部分和右部分舍入。
我希望上面的代码在编译时会在所有 4 行中产生错误,因为我的理解是 div/mod 无论如何都不适用于浮点值。显然情况并非如此。
为什么我可以在 Delphi 中将 Single 除以 Variant,它需要什么?
【问题讨论】:
-
这只是变体类型强制。变体旨在允许尽可能多的类型转换。如果您想了解更多原因,那么您应该查看 MS COM 文档。
标签: delphi floating-point variant