All submissions

Convert a String to Float

Code

#include <stdio.h>
#include <stdint.h>
#include <math.h>
float custom_atof(const char *str) {
    int decimal_pt=0;
    int countA=0,countB=0;
    char arrA[20];
     char arrB[20];
     int num=0;
     float num1=0;
     int sign=0;
    do
    {
        if(*str=='-')
        {
            sign=1;
        }
        if(*str>=48 && *str<58)
        {
            if(decimal_pt)//count after decimal point
            {
                arrA[countA++]=*str;
               
            }
            else
            {
                 arrB[countB++]=*str;
            }
        }
        else if(*str=='.'){
            decimal_pt=1;
        }

    }while(*str++!='\0');
    for(int i=0;i<countB;i++)
    {
        num=num+(arrB[i]-48)*pow(10,countB-i-1);
    }

    for(int i=0;i<countA;i++)
    {
        num1=num1+(arrA[i]-48)*pow(10,countA-i-1);
    }
    num1=(float)num1/pow(10,countA);
    num1=num+num1;
    if(sign)
    {
        num1*=(-1);
    }
    
    return num1;
}

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

 

 

 

Loading...

Input

123.45

Expected Output

123.45