为什么以下代码在64位编译中失败(但在32位编译中有效)?
var
TruncTmp: Extended;
begin
TruncTmp := 9223372036854775296;
TruncTmp := Trunc(TruncTmp); // this fails on 64-bit
Assert(TruncTmp = 9223372036854775296);
end;
在$0000000000405D70处发生了第一次异常。异常类$c0000090,错误信息是'c0000090 FLOAT_INVALID_OPERATION'。
这是一个Bug,还是我遗漏了什么?
注:
- 我使用的是Delphi 10.2
- 数字小于
9223372036854775296
都可以正常工作