Hello, i'm tyring too check if an float value that someone enters is correct and does not exceed a certain range. Right now I'm trying to use E, where represnts the exponent to a power of 10 and digits represents 1 or more juxtaposed numbers. E can be the lower case, "e". There can be no more than 7 digits in any floating points number excluding the exponent (the decimal point does not count as a digit) Exponents are restriced to range of -38 to 38.
This is what I have right now:
else if(out == 3)
int exponent_check = 0;
std::istringstream(Lexeme.substr((Lexeme.length())-2 ,Lexeme.length())) >> exponent_check;
if(((exponent_check >= 38) || (exponent_check <= -38)) &&
((Lexeme.find("e") == ((Lexeme.length())-3)) || (Lexeme.find("E") == ((Lexeme.length())-3)) ||
(Lexeme.find("e") == ((Lexeme.length())-4)) || (Lexeme.find("E") == ((Lexeme.length())-4))) && Lexeme.find(".") != 0)
cout << "\n*** ERROR - Float Literal exponent is out of range ( -38 < x < 38 )" << endl;
I'm trying to check the the length then compare. The number that I am checking is the following:
This number should be throwing an error but it doesn't so I need to know what I am doing wrong in the check. Any help with this would be great.