#include <stdio.h> #include <stdint.h> float custom_atof(const char *str) { int v=0,flag=0,i=0,a=0; float f=0,d=1; if(str[0]=='-') { flag=1; i=1; } if(str[0]=='+') i=1; for(i;str[i]!=0;i++){ if(str[i]=='.') { a=1; continue; } if(a==1){ f=(f*10.0f)+(str[i]-48); d=d*10.0f; } else{ v=(v*10.0f)+str[i]-48; // printf("v=%d",v); } } if(flag==1) return -(v+(f/d)); return v+(f/d); } 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; }
Test Cases
Test Results
Input
123.45
Expected Output