- использовать точную библиотеку с плавающей запятой
- возможно, переключиться на больший тип данных (double) для более широкого диапазона точности
- использовать целочисленную математику
В моем примере у меня была строка со значением «0,04». Когда я использую для него std::stof(), получается значение 0,0399999991. Минимальная сумма, которую мне нужно добавить к этому значению с плавающей запятой, чтобы оно соответствовало строке (по крайней мере, до десятичной точки моей строки), составляет 0,0000000019, поэтому затем она преобразуется в 0,0400000010. Я понял это, просто добавляя до тех пор, пока не произошел сдвиг.
Существует ли уже метод такого расчета для всех чисел с плавающей запятой? В противном случае я боюсь, что мне придется выполнить цикл, чтобы продолжать увеличиваться на 0,0000000001. Однако я не уверен, как программно заключить успех, учитывая, что переключение 0.0399999991 обратно на строку снова приводит к строке «0.04».
Подробнее здесь: https://stackoverflow.com/questions/791 ... sion-value