Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Для новичков > проблема с float |
Автор: daemonaz 20.9.2013, 15:19 |
Программирую в Qt SDK, столкнулся с такой проблемой, нужно было вычислить по некой формуле число с плавающей точкой с обратным преобразованием в целое число появляются ошибки, выявил ошибку в присваивании float tmp = 0.35, но в пошаговом режиме когда стал смотреть, то увидел что число не ровно 0.35, а 0.349999999999, а на единицу прибавил, то есть 0.36, отладчик показывает 0.360000003 . Как с этим бороться? |
Автор: baldina 20.9.2013, 17:28 | ||
путем изучения матчасти. числа с плавающей запятой представляются в компьютере с конечной точностью (в силу конечного размера отведенной под число памяти). для чисел float это заметнее чем для double: их размер (в битах) меньше. т.к. используется двоичная арифметика, дробная часть представляется с точностью до степени двойки. т.е. числа 0.5 и 0.25 представляются точно, а 0.1 и 0.3 - приближенно. это нужно учитывать при вычислениях и сравнениях чисел с запятой: в вычислениях, если возможно, не использовать накопление результата, сравнения производить не ==, а с требуемой точностью:
|
Автор: vinter 25.9.2013, 12:40 |
в Qt есть средства для сравнения float/double: qFuzzyCompare |