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