gpt4 book ai didi

delphi - 解决 Delphi 中整数溢出的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-05 02:27:42 25 4
gpt4 key购买 nike

我有一个 double 值将传递给 Round,我需要确保它不会溢出 Int64。如果它会溢出,我只是将值设置为 0。这样做的最佳方法是什么?我想了两个办法:

  1. 处理异常
try
rounded := Round(value);
except
on E: EInvalidOp do
rounded := 0;
end;
  1. 比较 Int64.MaxValueInt64.MinValue
if (CompareValue(value, Int64.MaxValue) <> GreaterThanValue) and (CompareValue(value, Int64.MinValue) <> LessThanValue) then
rounded := Round(value)
else
rounded := 0;

我想知道处理这个问题的最佳方法是什么。性能是我关心的问题。我正在使用 Delphi 10.3。

最佳答案

如果您主要关心的是性能,那么最好是“视情况而定”。

如果您希望 value 经常溢出 Int64,则第二个更好,否则,第一个会更好。

第一个每次不引发异常时都会稍微快一点,每次引发异常时都会慢得多。

对于大多数用例,我会说 #1 会更快。

关于delphi - 解决 Delphi 中整数溢出的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72995246/

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