Проблема двойного типа данных в C ++ - PullRequest
2 голосов
/ 19 апреля 2011

Давайте рассмотрим следующий пример.double x = 1234597000.0

Когда я сохраняю значение x в БД, оно сохраняется как 1234600000. Когда я выполняю операцию вычитания в программе, оно обрабатывается как 1234600000. Не могли бы вы помочь мне понять, что такоечто там происходит?

моя система - Solaris, и я компилирую программу с помощью компилятора Sun Studio C ++ (CC).

Заранее спасибо.

Ответы [ 2 ]

6 голосов
/ 19 апреля 2011

Вы попали в ловушку кодирования с плавающей точкой IEEE.Этот вопрос возникает совсем немного.Пожалуйста, смотрите Что должен знать каждый учёный об арифметике с плавающей точкой

2 голосов
/ 19 апреля 2011

Похоже, ваш двойник конвертируется в или из числа с плавающей точкой (читай: потеря точности) где-то вдоль линии. Поплавки имеют только 6-7 значащих цифр IIRC, а не более дюжины для двойных.

...