Как сохранить точность Double в C ++ - PullRequest
1 голос
/ 04 марта 2011
main()
{
   double d1 = 1234.1;
   cout << "d1 = 1234.1 --> " << d1 << endl;
   double d2 = 1234.099999;
   cout << "d2 = 1234.099999 --> " << d2 << endl;
}

Выход:

d1 = 1234.1 --> 1234.1
d2 = 1234.099999 --> 1234.1

Я действительно хочу напечатать точное значение d2, т.е. 1234.099999, но не получаю то же самое.

Подскажите, пожалуйста, как я могу получить точное значение.

1 Ответ

7 голосов
/ 04 марта 2011

Вы хотите cout.precision http://www.cplusplus.com/reference/iostream/ios_base/precision/

Также обратите внимание, что d2 не совсем 1234.099999, а d1 не совсем 1234.1

Числа с плавающей запятой приводят к ошибкам округления, поэтому они округляютв меньшее количество мест по умолчанию, чтобы попытаться отобразить значимый результат.

...