improved handling of commas in fast_atof
parent
8ae9e2b555
commit
18e6a8fbdb
|
@ -260,14 +260,14 @@ inline const char* fast_atoreal_move(const char* c, Real& out, bool check_comma
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(c[0] >= '0' && c[0] <= '9') &&
|
if (!(c[0] >= '0' && c[0] <= '9') &&
|
||||||
!(c[0] == '.' && c[1] >= '0' && c[1] <= '9'))
|
!((c[0] == '.' || (check_comma && c[0] == ',')) && c[1] >= '0' && c[1] <= '9'))
|
||||||
{
|
{
|
||||||
throw std::invalid_argument("Cannot parse string "
|
throw std::invalid_argument("Cannot parse string "
|
||||||
"as real number: does not start with digit "
|
"as real number: does not start with digit "
|
||||||
"or decimal point followed by digit.");
|
"or decimal point followed by digit.");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (*c != '.')
|
if (*c != '.' && (! check_comma || c[0] != ','))
|
||||||
{
|
{
|
||||||
f = static_cast<Real>( strtoul10_64 ( c, &c) );
|
f = static_cast<Real>( strtoul10_64 ( c, &c) );
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue