Почему вывод отличается от кода, который я ожидал?
Я запускаю этот код, но результат отличается от того, что я ожидал. Выход:
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. Вам нужно установить более высокую точность, чтобы увидеть более "правильное" значение
Однако установка слишком высокой точности может привести к выводу большого количества мусорных цифр, поскольку двоичные типы с плавающей запятой не могут точно хранить все десятичные значения с плавающей запятой.
Типы с плавающей точкой наследуют ошибки округления в результате их представлений фиксированной ширины. Дополнительные сведения см. В разделе " Что должен знать каждый компьютерщик об арифметике с плавающей запятой".