#include <stdio.h>
#include <stdint.h>
float custom_atof(const char *str) {
int sign = 1;
float num = 0;
int index = 0;
float dec = 0;
float div = 10.00;
int flag = 0;
if (*str == '+'){
str++;
}
if (*str == '-'){
sign = -1;
str++;
}
while (*str != '\0'){
if ((*str != '.') && flag == 0){
num = num * 10 + (*str - '0');
} else if (flag == 1) {
// printf("%d \n", (*str - '0'));
dec = dec + ((*str - '0') / div);
div*= 10.00;
} else if (*str == '.'){
flag = 1;
}
str++;
}
return (num + dec) * 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;
}
Input
123.45
Expected Output
123.45