[ create a new paste ] login | about

Link: http://codepad.org/UdQ3fBEH    [ raw code | output | fork ]

C, pasted on May 15:
#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 */


Output:
1
floating-point: Floating Number: 1.000000


Create a new paste based on this one


Comments: