828{
830
831 if (*_number ==
__T(
'\0') || iswspace((wint_t)*_number)) {
832 throw new NumericConvertException(_number, 0, 0);
833 }
834
835 NumericConvertException::Error error = NumericConvertException::NoError;
836 wchar_t* endptr =
NULL;
837 double n = wcstod(_number, &endptr);
838 if (+HUGE_VAL ==
n || -HUGE_VAL ==
n) {
839 error = NumericConvertException::Overflow;
840 }
else if (!(DBL_MIN <
n)) {
841 error = NumericConvertException::Underflow;
842 }
843
844 if (NumericConvertException::NoError != error) {
845 throw new NumericConvertException(
846 error,
847 _number,
848 0
849 );
850 }
851
852 if ((endptr && *endptr != '\0') || errno == EINVAL) {
853 throw new NumericConvertException(
854 _number,
855 0,
856 endptr ? (endptr - _number) : 0
857 );
858 }
859
861}
#define __DCL_ASSERT(expr)
void CharsetConvertException *size_t n