Я работаю над некоторой проблемой c ++, которая должна вывести 22258199.5000000 это число, я сохранил результат в двойном типе данных, и когда я попытался напечатать эту переменную, используя std :: cout, она округлилась до 22258200.0000000, я не знаю, почему это происходит ? кто-нибудь может объяснить? что я могу сделать, чтобы избежать этой проблемы?
32-битный float
Тип содержит приблизительно 7 десятичных цифр, и все, что находится за его пределами, будет округлено до ближайшего представимого значения.
64-битный double
Тип содержит примерно 15 десятичных цифр, а также округляет значения за пределы этого.
Поскольку ваше значение округляется до ближайшего 7-значного числа, похоже, вы используете float
переменная где-то. Копирование float
значение для double
не восстанавливает потерянные цифры.
Это не относится к вашему примеру, но может и к другим — округление происходит в двоичном, а не в десятичном формате, поэтому вы можете получить значение, которое, по-видимому, содержит намного больше цифр, чем я указал выше. Просто знайте, что только первые 7 или 15 будут точными в десятичном виде.