Convert a String to Float

Code

#include <stdio.h>
#include <stdint.h>

float custom_atof(const char* str) {
  float num = 0.0;
  float sign = 1;

  if (*str == '-') {
    sign = -1;
    str++;
  } else if (*str == '+') {
    str++;
  }

  while (*str != '\0') {
    if (*str != '.') {
      num = (num * 10.0) + (float)(*str - '0');
      str++;
    }

    else {
      str++;
      float dec = 0.0;
      float divisor = 10;
      while (*str != '\0') {
        dec +=  (*str - '0')/divisor;
        divisor *= 10.0;
        str++;
    }
    num += dec;
    }
}

  return num*sign;
}

int main() {
    char str[101];
    fgets(str, sizeof(str), stdin);

    // Remove newline
    uint8_t i = 0;
    while (str[i]) {
        if (str[i] == '\n') {
            str[i] = '\0';
            break;
        }
        i++;
    }

    float value = custom_atof(str);
    printf("%.2f", value);
    return 0;
}

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Input

123.45

Expected Output

123.45