Как избежать округления больших значений типа float или double?

Я работаю над некоторой проблемой c ++, которая должна вывести 22258199.5000000 это число, я сохранил результат в двойном типе данных, и когда я попытался напечатать эту переменную, используя std :: cout, она округлилась до 22258200.0000000, я не знаю, почему это происходит ? кто-нибудь может объяснить? что я могу сделать, чтобы избежать этой проблемы?

1

Решение

32-битный float Тип содержит приблизительно 7 десятичных цифр, и все, что находится за его пределами, будет округлено до ближайшего представимого значения.

64-битный double Тип содержит примерно 15 десятичных цифр, а также округляет значения за пределы этого.

Поскольку ваше значение округляется до ближайшего 7-значного числа, похоже, вы используете float переменная где-то. Копирование float значение для double не восстанавливает потерянные цифры.

Это не относится к вашему примеру, но может и к другим — округление происходит в двоичном, а не в десятичном формате, поэтому вы можете получить значение, которое, по-видимому, содержит намного больше цифр, чем я указал выше. Просто знайте, что только первые 7 или 15 будут точными в десятичном виде.

3

Другие решения


По вопросам рекламы [email protected]