我正在尝试使用这样的方法填充具有双精度值的字符串sprintf
:
sprintf(S, "%f", val);
但精度被削减到小数点后六位。我需要大约 10 位小数来保证精度。
怎样才能做到这一点?
我正在尝试使用这样的方法填充具有双精度值的字符串sprintf
:
sprintf(S, "%f", val);
但精度被削减到小数点后六位。我需要大约 10 位小数来保证精度。
怎样才能做到这一点?
%[宽度].[精度]
宽度应包括小数点。
%8.2 表示 8 个字符宽;点前 5 位,后 2 位。为该点保留一个字符。
5 + 1 + 2 = 8
你想要的是一个修饰符:
sprintf(S, "%.10f", val);
man sprintf 将提供有关格式说明符的更多详细信息。
如需更完整的参考,请参阅Wikipedia printf文章的“printf 格式占位符”部分以及同一页面上的一个很好的示例。
注意 - sprintf 的输出会因 C 语言环境而异。这可能是也可能不是您想要的。请参阅语言环境文档/手册页中的 LC_NUMERIC。
%f
用于浮点值。
尝试%lf
改用。它专为双精度浮点数(过去称为长浮点数)而设计。
双 x = 3.14159265 ;
printf("15.10lf\n", x);