#include <stdio.h> #include <stdint.h> float custom_atof(const char *str) { // Your logic here float ans=0.0; int i=00,decimalPart=0; if(str[0]=='-'|| str[0]=='+') i=1; while(str[i]!='\0'){ if(str[i]=='.') decimalPart=10; else if(decimalPart==0) ans=ans*10+str[i]-'0'; else { ans = ans+1.0*(str[i]-'0')/decimalPart; decimalPart*=10; } i++; } return str[0]=='-'?-ans:ans; } 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