#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; }
Test Cases
Test Results
Input
123.45
Expected Output