#include <stdio.h> #include <stdint.h> float custom_atof(const char *str) { int sign = 1; float num = 0.0; float decimal_part = 0.1; if(*(str) == '-'){ sign = -1; str++; } else if(*str == '+'){ str++; } while(*str >= '0' && *str <= '9'){ num = num * 10 + (*str - '0'); str++; } if(*str == '.'){ str++; while(*str>='0' && *str<='9'){ num = num + (*str - '0')*decimal_part; decimal_part = decimal_part * 0.1; str++; } } 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; }
Test Cases
Test Results
Input
123.45
Expected Output