6

我正在尝试使用这样的方法填充具有双精度值的字符串sprintf

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

但精度被削减到小数点后六位。我需要大约 10 位小数来保证精度。

怎样才能做到这一点?

4

5 回答 5

9

%[宽度].[精度]

宽度应包括小数点。

%8.2 表示 8 个字符宽;点前 5 位,后 2 位。为该点保留一个字符。

5 + 1 + 2 = 8

于 2008-09-16T06:17:41.860 回答
7

你想要的是一个修饰符:

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

man sprintf 将提供有关格式说明符的更多详细信息。

于 2008-09-16T06:15:50.010 回答
1

如需更完整的参考,请参阅Wikipedia printf文章的“printf 格式占位符”部分以及同一页面上的一个很好的示例

于 2008-09-16T06:19:58.890 回答
1

注意 - sprintf 的输出会因 C 语言环境而异。这可能是也可能不是您想要的。请参阅语言环境文档/手册页中的 LC_NUMERIC。

于 2008-09-16T06:20:34.460 回答
1

%f用于浮点值。

尝试%lf改用。它专为双精度浮点数(过去称为长浮点数)而设计。

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

于 2008-09-16T19:05:11.983 回答