33 double mant, expo, tmpn;
34 bool sign =
false, exsign =
false;
41 else if (*
string ==
'-') {
47 if ((!isdigit(*
string) && *
string !=
'.') ||
48 ((*
string ==
'.') && !isdigit(
string[1])))
52 if (isdigit(*
string)) {
53 mant = (*
string++ -
'0');
54 while (isdigit(*
string))
55 mant = mant * 10.0 + (*
string++ -
'0');
64 while (isdigit(*
string))
65 mant += (*
string++ -
'0') * (tmpn *= 0.1);
78 else if (*
string ==
'-') {
82 if (isdigit(*
string)) {
83 expo = (*
string++ -
'0');
84 while (isdigit(*
string))
85 expo = expo * 10.0 + (*
string++ -
'0');
92 while (isdigit(*
string))
93 expo += (*
string++ -
'0') * (tmpn *= 0.1);
96 expo = pow(10.0,-expo);
98 expo = pow(10.0,expo);
138 if (
string[1] &&
string[2] &&
139 ((
string[1] ==
'e') || (
string[1] ==
'E')) &&
140 ((
string[2] ==
'g') || (
string[2] ==
'G'))) {
144 else if (
string[1] &&
string[2] &&
145 ((
string[1] ==
'i') || (
string[1] ==
'I')) &&
146 ((
string[2] ==
'l') || (
string[2] ==
'L'))) {
158 if (whole && *
string !=
'\0') {
163 while (isalpha(*
string) || (*
string ==
'_'))
169 while (isalpha(*
string) || (*
string ==
'_'))
179 fprintf(
cp_err,
"numparse: got %e, left = %s\n", num, *s);
double * ft_numparse(char **s, bool whole)