/ fp: fast vs: fp: точный, с какими ошибками я могу столкнуться? - PullRequest
2 голосов
/ 31 июля 2011

Мне интересно, с какими ошибками я могу столкнуться, если я установлю / fp: fast вместо fp: precision? Я работаю под MSV10

Я выполняю /, *, +, - двойные операции с макс. Цифрами, равными 8, например 1.4379294 (курс валюты).

1 Ответ

7 голосов
/ 31 июля 2011

Те же ошибки, которые вы всегда получаете при вычислениях double : вы никогда не получите более 15 значащих цифр после преобразования результата в десятичную, остальные - просто случайные цифры шума.Разница между / fp: fast и / fp: точная - это то, что происходит с этими цифрами шума.

Опция / fp: точная решает проблему с FPU x86, она сохраняет промежуточные результаты в регистрах FPU с 80биты точности.Что может привести к слегка разным значениям цифр шума, если промежуточное значение хранится в регистре.С / fp: точным, генератор кода вынужден сбросить эти значения обратно в память, урезая их до 64 бит.Это медленно, но генерирует более последовательный шум.Что имеет значение, если вы совершаете грех сравнения значений с плавающей запятой на равенство без эпсилона.

Слишком много недоразумений для большинства бухгалтеров, использование математической библиотеки, которая насчитывает 10 пальцев вместо 2, является распространенным решением.Это решает проблему с цифрами шума, устраняя те, которые генерируются при преобразовании чисел из базы 10 в базу 2. Код будет медленным, намного медленнее, чем / fp: точным, поскольку все вычисления выполняются в программном обеспечении без аппаратного ускорения.Но, как правило, не проблема в бухгалтерских приложениях.

...