#include <stdio.h>
#define N 256
int main() {
static char buff[N];
double significant, floatingNumber;
int exponent, i, rc;
printf("floating-point: ");
scanf("%s", buff);
{
int i, sign;
rc = 1;
double k;
significant = 0.0;
exponent = 0;
for (i = 0; buff[i] && buff[i] != '.'; i++) {
if (buff[i] >= '0' && buff[i] <= '9') {
significant = significant * 10.0;
significant = significant + (buff[i] - '0');
} else {
rc = 0;
break;
}
}
if (buff[i] == '.') {
i++;
k = 0.1;
for (; buff[i] && buff[i] != 'e'; i++) {
if (buff[i] >= '0' && buff[i] <= '9') {
significant = significant + (k * (buff[i] - '0'));
k = k / 10.0;
} else {
rc = 0;
break;
}
}
}
if (buff[i] == 'e') {
i++;
if (buff[i] == 0)
return 0;
sign = 0;
if (buff[i] == '+') {
i++;
} else if (buff[i] == '-') {
sign = 1;
i++;
}
for (; buff[i]; i++) {
if (buff[i] >= '0' && buff[i] <= '9') {
exponent = exponent * 10;
exponent = exponent + (buff[i] - '0');
} else {
rc = 0;
break;
}
}
if (sign > 0)
exponent = exponent * -1;
}
}
if (rc) {
floatingNumber = significant;
if (exponent > 0) {
for (i = 0; i < exponent; i++)
floatingNumber *= 10.0;
} else if (exponent < 0) {
for (i = 0; i > exponent; --i)
floatingNumber /= 10.0;
}
floatingNumber = floatingNumber + 1.0;
printf("Floating Number: %f\n", floatingNumber);
}
return 0;
}
/* end */