gpt4 book ai didi

delphi - 对于 64 位构建,Trunc() 对于高 Int64 失败

转载 作者:行者123 更新时间:2023-12-03 15:18:15 27 4
gpt4 key购买 nike

为什么以下代码对于 64 位构建会失败(但适用于 32 位构建)?

var
TruncTmp: Extended;
begin
TruncTmp := 9223372036854775296;
TruncTmp := Trunc(TruncTmp); // this fails on 64-bit
Assert(TruncTmp = 9223372036854775296);
end;

First chance exception at $0000000000405D70. Exception class $C0000090 with message 'c0000090 FLOAT_INVALID_OPERATION'.

这是一个错误还是我遗漏了什么?

注释:

  • 我使用的是 Delphi 10.2
  • 数字 <9223372036854775296 工作正常

最佳答案

Win64 下没有“扩展”(80 位 FP)类型 - 它只是“double”(64 位 FP)的别名。所以 double 只有 53 位分辨率。

所以我的猜测是您的情况符合预期。

关于delphi - 对于 64 位构建,Trunc() 对于高 Int64 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48301595/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com