В моем проекте мне нужно прочитать некоторые числовые данные из XML-файла, использовать его и сохранить его на диске в другом каталоге.Точный std :: string to float conversion
Пропустив файл кожуру речь идет о проблеме std::string
для float
преобразования:
std::string sFloatNumber;
float fNumber = std::atof(sFloatNumber);
который работает нормально, но я заметил небольшие отклонения между значением, записанным в std::string
и один за полученные после преобразования в float
(о ~ 0,0001).
Отклонение невелико, но после того, как количество таких операций может накапливаться до большой иранской архитектуры позже.
Так что я спрашиваю, есть ли какая-то конверсия между std::string
и float
, которая имеет точность 1: 1?
Возможно, использование 'double' дает вам лучшую точность? –
Можете указать, что вы имеете в виду с точностью «1: 1»? Не все десятичные числа могут быть точно представлены в двоичном формате с плавающей запятой. 9 мест после десятичной точки достаточно, чтобы зафиксировать полную точность 'float'. Но значение не всегда может быть точным. 0,1 не представляется в двоичном виде, как, например, 1/3 не представляется в виде десятичного числа. – Angew
Номера с плавающей точкой по самой своей природе являются неконструктивными. – dandan78