为什么以下代码在64位版本中失败(但适用于32位版本)?
var
TruncTmp: Extended;
begin
TruncTmp := 9223372036854775296;
TruncTmp := Trunc(TruncTmp); // this fails on 64-bit
Assert(TruncTmp = 9223372036854775296);
end;
Run Code Online (Sandbox Code Playgroud)
第一次机会异常在$ 0000000000405D70.消息'c0000090 FLOAT_INVALID_OPERATION'的异常类$ C0000090.
这是一个错误还是我错过了什么?
笔记:
9223372036854775296工作正常Arn*_*hez 12
Win64下没有"扩展"(80位FP)类型 - 它只是"双"(64位FP)的别名.所以你只有53位的分辨率.
所以我的猜测是你的情况如预期的那样.