Я пытаюсь преобразовать переменную из строки в float. Но я ошибаюсь. Ниже мой код.Преобразование из строки в float
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>
main(int argc,char *argv[])
{
char endTime[4][26];
time_t timere;
struct tm *tm_infoe;
float dlay[4][3];
time(&timere);
tm_infoe = localtime(&timere);
strftime(endTime[1], 26, "%Y%m%d%H%M%S", tm_infoe);
printf("Endtime %s\n", endTime[1]);
dlay[1][1]=atol(endTime[1]);
printf("Value from atol:%ld\n", atol(endTime[1]));
dlay[1][1]=atof(endTime[1]);
printf("Float value from atof:%f\n", dlay[1][1]);
sscanf(endTime[1], "%f", &dlay[1][1]);
printf("Float value from sscanf:%f\n", dlay[1][1]);
}
Обе функции atof и sscanf дают неправильные значения. Ниже приведен вывод. Не могли бы вы рассказать мне, где ошибка?
Endtime 20151018221710
Value from atol:20151018221710
Float value from atof:20151017668608.000000
Float value from sscanf:20151017668608.000000
atol дает правильное значение, но оно мне нужно в поплавком формате.
Как это так? Это не улучшится. – deviantfan
'float' с точностью до 7-8 десятичных цифр. Похоже, вы наблюдаете результаты в этом допуске. Что снова кажется проблемой? –