Разница в вычислениях при использовании х86 и 64х
|
|
Среда, 17 Марта 2021 г. 09:44
+ в цитатник
Rouse_: Вообще эта плавающая точка тот еще зверек.
Давеча вылезла ошибка у одного из клиентов, казалось бы обычное число 8.07875.
Но если это число было в Double и его присвоить переменной типа Currency то под 64 бита получим 8.0788, а под 32 - 8.0787 и дальше все рассчеты поплывут :wall:
Случайно наткнулись.
Выкрутится конечно можно примерно так:
function ConvertDoubleToCurrency(Value: Double): Currency;
begin
Value := Value * 10000;
Result := Round(Value) / 10000;
end;
Но есть еще неявные преобразования, поэтому похоже придется использовать кастомные типы и все преобразования делать через "class operator Implicit/Explicit"
https://forum.sources.ru/index.php?showtopic=421187&view=findpost&p=3845486
Метки:
Delphi:
Общие вопросы
-
Запись понравилась
-
0
Процитировали
-
0
Сохранили
-