/* atof.c: converts an ASCII string to float
- Copyright (C) 2003 Jesus Calvino-Fraga, jesusc@ieee.org
+ Copyright (C) 2003 Jesus Calvino-Fraga, jesusc@ieee.org
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
#include <ctype.h>
#include <stdlib.h>
+#include <stdbool.h>
float atof(char * s)
{
float value, fraction;
char iexp;
-#ifdef SDCC_mcs51
- bit sign;
-#else
- char sign;
-#endif
+ BOOL sign;
//Skip leading blanks
while (isspace(*s)) s++;
}
//Get the fraction
- if (*s=='.')
+ if (*s == '.')
{
s++;
- for (fraction=10.0; isdigit(*s); s++)
+ for (fraction=0.1; isdigit(*s); s++)
{
- value+=(*s-'0')/fraction;
- fraction*=10.0;
+ value+=(*s-'0')*fraction;
+ fraction*=0.1;
}
}
if (toupper(*s)=='E')
{
s++;
- while(*s=='0') s++;//So atoi doesn't return an octal number
iexp=(char)atoi(s);
{
while(iexp!=0)
{
if(iexp<0)
{
- value/=10.0;
+ value*=0.1;
iexp++;
}
else