цифры после десятичной точки для двойных переменных / вычислений в переполнении стека

Возможный дубликат:
Запись чисел в файл с большей точностью — C ++

Сохраняя значения широты / долготы как doubleЯ продолжаю заканчивать с переменными, которые содержат урезанные числа -e.g. 47.2792 для 47.279229 и 8.42432 для 8.424317 — Каков наилучший способ заставить переменные хранить все цифры без потерь во время как назначения переменных, так и выполнения арифметических операций — например, добавление 0.01098901098 к 47.279229 и сохранение его как новой переменной без потери точности и т. д. -? setprecision обрабатывает это для потоков, но мне еще предстоит найти способ, который будет служить его переменным / математическим аналогом.

0

Решение

Тип double внутренне [обычно] хранится в виде двоичной плавающей запятой. В общем, десятичные значения не могут быть точно представлены с использованием двоичных значений с плавающей запятой, хотя исходные десятичные значения часто могут быть восстановлены точно (за исключением правильного числа конечных нулей). При выполнении вычислений значения, близкие к исходным значениям, обрабатываются, что вносит дополнительные ошибки. Результат преобразования десятичных дробных чисел в doubleвычисление с этими значениями и их преобразование приведет к значениям, близким к ожидаемому результату, но это не будет точным.

Если вам известно максимальное количество дробных цифр, которые вы собираетесь обработать, вы можете умножить свои исходные значения на подходящую степень 10 и использовать целочисленную арифметику для своих вычислений. Чтобы отобразить значения, вы просто должны вставить десятичную точку в соответствующем месте.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector