double matof(const char *str) { int sign=0; register long double value = 0.L; long double a=0.1; register const char *p=str; while(isspace(*p)) p++; sign = (*p == '-')?-1:1; if((*p=='-')||(*p=='+')) p++; while( (*p!=('/0')) &&isdigit(*p) ) { value = (*p-'0')+value*10; p++; } if(*p=='.') p++; while( (*p!=('/0')) &&isdigit(*p)) { value +=a*(*p-'0'); a=a*0.1; p++; } return sign*value; }