Как использовать “%f” для заполнения двойного значения в строку с нужной точностью

StackOverflow https://stackoverflow.com/questions/69743

Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

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

5 + 1 + 2 = 8

Другие советы

То, что вам нужно, - это модификатор:

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

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top