Почему измерения в программе С++ неточные?
задачу и мой код прикрепил в фотографиях
вопрос - почему при использовании типа переменных float измерения неточные? я вроде не ухожу в большое кол-во цифр после запятой, а наоборот, умножаю. при использовании double результат становится точным. можно ли на таком скелете программы сделать точный вывод через float?
Тип float целесообразно использовать в случаях когда значения небольшие, необходимая точность после разделителя два-три знака, а данных тьма-тьмущая. Например, при работе с базами данных.
Если точность после разделителя нужна высокая либо вещественные числа имеют очень большие значения и точность является определяющим характером. Следует использовать сторонние библиотеки длинной арифметики.
Во всех остальных случаях следует использовать тип double.
Это побочный эффект того, как данные с плавающей запятой представляются в ЦП. По этой причине может происходить некоторая потеря точности, а некоторые операции с плавающей запятой могут давать непредвиденный результат. Причины такого поведения могут быть следующими. Двоичное представление десятичного числа может быть неточным. Несоответствие типов используемых чисел (например, float и double). Для решения этой проблемы большинство программистов либо гарантируют, что значение больше или меньше необходимого, либо используют библиотеку двоично-десятичного кода (BCD), которая будет обеспечивать точность.
Ограничения из да размера регистров памяти выделяемой под хранение
переменных с плавающей запятой. младшие разряды не умещаются.
При большом количестве знаков после запятой
значения double тоже становятся не точными.
Следует использовать сторонние библиотеки длинной арифметики.
число 500.1 не может быть представлено в виде конечной двоичной дроби
при использовании double результат тоже будет неточным, просто, возможно, в вывод ошибка не попадёт