Fix float parsing errors

This commit is contained in:
teejusb
2020-04-08 22:01:16 -07:00
parent caf2f6522e
commit 1d365fbc18
+23 -12
View File
@@ -1877,27 +1877,38 @@ void MakeLower( wchar_t *p, size_t iLen )
float StringToFloat( const RString &sString ) float StringToFloat( const RString &sString )
{ {
RString toTrim = sString; try
Trim(toTrim);
if (toTrim.size() == 0)
{ {
return 0; float fOut = std::stof(sString);
if (!isfinite(fOut))
{
fOut = 0.0f;
}
return fOut;
}
catch(...)
{
return 0.0f;
} }
return std::stof(toTrim);
} }
bool StringToFloat( const RString &sString, float &fOut ) bool StringToFloat( const RString &sString, float &fOut )
{ {
RString toTrim = sString; try
Trim(toTrim);
if (toTrim.size() == 0)
{ {
fOut = std::stof(sString);
if (!isfinite(fOut))
{
fOut = 0.0f;
return false;
}
return true;
}
catch(...)
{
fOut = 0.0f;
return false; return false;
} }
char *endPtr;
fOut = strtof( toTrim, &endPtr );
return *endPtr == '\0' && isfinite( fOut );
} }
RString FloatToString( const float &num ) RString FloatToString( const float &num )