неправильное деление long на double C++
Занимаюсь изучением C++. Столкнулся с такой проблемой: имеется переменная типа long, и мне нужно вывести ее, поделив на 100.0, с сохранением дробной части. Работает такое деление не со всеми числами . Например с следующими числами возникают вопросы: 1111101, 2222202 и т.д. Приведу примеры выражений:
1'111'111 / 100.0 == 11'111.1 //пропала единица
1'111'101 / 100.0 == 11'111 //отсутствует дробная часть
2'345'678 / 100.0 == 23'456.8 //пропала цифра семь
Пожалуйста, помогите с решением данной проблемы и объясните причину такого поведения.
Добавил простой пример кода:
long num = 2'345'678;
std::cout << num / 100.0;
Ответы (1 шт):
Вывод на экран и само значение — это две большие разницы. По умолчанию выводится 6 значащих цифр. Этот параметр можно изменять, так что посмотрите на вывод вот такого фрагмента и убедитесь, что деление правильное :)
long num = 2'345'678;
std::cout << num / 100.0 << std::endl;
std::cout << std::setprecision(12);
std::cout << num / 100.0 << std::endl;
std::cout << std::setprecision(3);
std::cout << num / 100.0 << std::endl;