Как использовать "% f", чтобы заполнить двойное значение в строку с правильной точностью - PullRequest
6 голосов
/ 16 сентября 2008

Я пытаюсь заполнить строку двойным значением, используя sprintf, например:

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

Но точность сокращается до шести десятичных знаков. Мне нужно около 10 знаков после запятой для точности.

Как этого достичь?

Ответы [ 5 ]

8 голосов
/ 16 сентября 2008

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

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

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

5 + 1 + 2 = 8

7 голосов
/ 16 сентября 2008

Что вы хотите, это модификатор:

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

У man sprintf будет намного больше деталей по спецификаторам формата.

1 голос
/ 16 сентября 2008

%f для значений с плавающей запятой.

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

двойной х = 3,14159265 ;
printf ("15.10lf \ n", x);

1 голос
/ 16 сентября 2008

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

1 голос
/ 16 сентября 2008
...