ввод fscanf с плавающей запятой

Я читаю из текстового файла, который содержит:

Mary 55334422 24.90 56.6 45.68

и я читаю это в:

....char name[20]; int num; double worked; double rate; double total;....

fscanf(fp, "%s %d %f %f %f\n", name, &num, &worked, &rate, &total);

Я получаю имя и целое число в порядке, но числа с плавающей запятой получаются примерно как -95229999900000000000000000000.00

Я делаю что-то не так здесь?


person rach    schedule 02.03.2011    source источник


Ответы (3)


Вам нужно использовать формат для двойного: %lf, а не для числа с плавающей запятой %f ... или перейти на числа с плавающей запятой вместо двойных.

person martin clayton    schedule 02.03.2011

Попробуйте lf вместо f для разбора на двойные переменные:

fscanf(fp, "%s %d %lf %lf %lf\n", name, &num, &worked, &rate, &total);
person Pablo Santa Cruz    schedule 02.03.2011

Измените свои удвоения на числа с плавающей запятой или измените формат на %lf

person Erik    schedule 02.03.2011