2008-09-16 3 views
5

Я пытаюсь заполнить строку с двойным значением с помощью sprintf так:Как использовать «% F», чтобы заполнить двойное значение в строку с правой точностью

sprintf(S, "%f", val); 

Но точность будучи отрезанным до шести знаков после запятой. Для точности мне нужно около десяти знаков после запятой.

Как это можно достичь?

ответ

8

% [ширина]. [Точность]

Ширина должна включать десятичную точку.

% 8.2 - 8 символов в ширину; 5 цифр до точки и 2 после. Один символ зарезервирован для точки.

5 + 1 + 2 = 8

7

То, что вы хотите, модификатор:

sprintf(S, "%.10f", val); 

человек Sprintf будет иметь много более подробную информацию о спецификаторов формата.

+0

Просто примечание: если он использует двойной, будет ли использовать «lf» вернее? – 2008-09-16 06:21:57

1

Позаботьтесь - выход sprintf будет варьироваться в зависимости от языка C. Это может быть или не быть тем, что вы хотите. См. LC_NUMERIC в языковых документах/справочных страницах.

1

%f предназначен для значений плавающих значений.

Попробуйте вместо этого использовать %lf. Он предназначен для двойников (которые раньше назывались длинными плаваниями).

double x = 3.14159265;
printf ("15.10lf \ n", x);

Смежные вопросы