Как преобразовать строку в float и избежать проблемы точности в C++
Привет,
У меня есть следующая проблема в c++.
std::string num = "0.6"; float temp = ::strtof(num.c_str(), nullptr);
Выход:
0.600000024
std::string num = ""2999.6"; float temp = ::strtof(num.c_str(), nullptr);
Выход:
2999.60010
Как избежать этой проблемы точности ?
Что я уже пробовал:
Я пробовал использовать sscanf_s
float myAtof(string& num) { floattmp; sscanf_s(num.c_str(), "%f", &tmp); return tmp; } float myround(float var) { float value = (int)(var * 100 + .5); return (float)value / 100; }
Но это не дает ожидаемого результата как 0,6 так и 2999,6
Не мог бы кто-нибудь объяснить мне, как правильно преобразовать значение.
Заранее спасибо.
Richard MacCutchan
Как говорит OriginalGriff ниже, значения были преобразованы. Вам нужно установить точность отображения при их печати.