Почему вывод отличается от кода, который я ожидал?

Я запускаю этот код, но результат отличается от того, что я ожидал. Выход:

c = 1324
v = 1324.99

Я ожидал, что выход должен быть 1324,987 для v, Почему данные в v отличается от вывода?

Я использую код Lite на Windows 8 32.

#include <iostream>
using namespace std;
int main()
{
    double v = 1324.987;
    int n;
    n = int (v);
    cout << "c = " << n << endl;
    cout << "v = " << v << endl;
    return 0;
}

2 ответа

Решение

Точность по умолчанию при печати с cout 6, поэтому будут отображаться только 6 десятичных знаков. Число округляется до ближайшего значения, поэтому вы видели 1324,99. Вам нужно установить более высокую точность, чтобы увидеть более "правильное" значение

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

Типы с плавающей точкой наследуют ошибки округления в результате их представлений фиксированной ширины. Дополнительные сведения см. В разделе " Что должен знать каждый компьютерщик об арифметике с плавающей запятой".

Другие вопросы по тегам