103 char const * wholepart = ascii;
108 while (isspace(*ascii)) {
116 char const * tptr = ascii;
117 while (isdigit(*tptr)) {
126 Data.Raw = (
unsigned short)((atoi(ascii) * 256) / 100);
129 Data.Composite.Whole = Data.Composite.Fraction = 0;
130 if (wholepart && *wholepart !=
'.') {
131 Data.Composite.Whole = (
unsigned char)atoi(wholepart);
134 char const * fracpart = strchr(ascii,
'.');
135 if (fracpart) fracpart++;
137 int frac = atoi(fracpart);
141 char const * fptr = fracpart;
142 while (isdigit(*fptr)) {
148 Data.Composite.Fraction = (
unsigned char)((256 * frac) / base);
175 if (buffer ==
NULL)
return(0);
181 int whole = Data.Composite.Whole;
182 int frac = ((int)Data.Composite.Fraction * 1000) / 256;
192 sprintf(tbuffer,
"%d", whole);
194 sprintf(tbuffer,
"%d.%02d", whole, frac);
196 char * ptr = &tbuffer[strlen(tbuffer)-1];
197 while (*ptr ==
'0') {
209 maxlen = strlen(tbuffer)+1;
215 strncpy(buffer, tbuffer, maxlen);
220 int len = strlen(tbuffer);
221 if (len < maxlen-1)
return(len);