-Поиск по дневнику

Поиск сообщений в rss_forum_sources_ru

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 29.07.2007
Записей:
Комментариев:
Написано: 80


Разница в вычислениях при использовании х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

Метки:  

 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку