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