Я хотел бы обнаружить недостаточное значение при преобразовании строки в double в C ++ (Visual C ++ 2010) с использованием функции strtod
. Код ниже не работает, как я ожидал, хотя я сделал это в соответствии с документацией strtod
:
char numStr[] = "123456.122111111123123123123132123123123123123124434345345";
char* pEnd;
double d = strtod(numStr, &pEnd);
int errorNum = errno;
if (errorNum == ERANGE) // this should be true
{
// underflow occurred
}
Используя отладчик, я обнаружил, что errorNum
всегда имеет значение 0
, а ERANGE
равно 34
.
Чего мне не хватает?