Я пытаюсь заполнить строку двойным значением, используя sprintf, например:
sprintf
sprintf(S, "%f", val);
Но точность сокращается до шести десятичных знаков. Мне нужно около 10 знаков после запятой для точности.
Как этого достичь?
% [ширина]. [Точность]
Ширина должна включать десятичную точку.
% 8,2 означает 8 символов в ширину; 5 цифр перед точкой и 2 после. Один символ зарезервирован для точки.
5 + 1 + 2 = 8
Что вы хотите, это модификатор:
sprintf(S, "%.10f", val);
У man sprintf будет намного больше деталей по спецификаторам формата.
%f для значений с плавающей запятой.
%f
Попробуйте использовать %lf. Он предназначен для парных разрядов (которые раньше назывались длинными поплавками).
%lf
двойной х = 3,14159265 ; printf ("15.10lf \ n", x);
Будьте осторожны - вывод sprintf будет различаться в зависимости от языка C. Это может или не может быть то, что вы хотите. См. LC_NUMERIC в региональных документах / справочных страницах.
Для получения более полной информации см. Статью Википедия printf , раздел "заполнители формата printf" и , хороший пример на той же странице .