如何使用"%f"将双精度值填充到具有正确精度的字符串中

时间:2020-03-05 18:55:13  来源:igfitidea点击:

我正在尝试使用sprintf用一个双精度值填充字符串,如下所示:

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

但是精度被截断到小数点后六位。我需要约10个小数位的精度。

如何实现呢?

解决方案

回答

我们想要的是一个修饰符:

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

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

回答

%[width]。[precision]

宽度应包含小数点。

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

5 +1 + 2 = 8

回答

有关更完整的参考,请参见Wikipedia printf文章," printf格式占位符"部分,以及位于同一页面上的一个很好的示例。

回答

请注意,sprintf的输出将通过C语言环境而变化。这可能是我们想要的,也可能不是。请参见语言环境文档/手册页中的LC_NUMERIC。

回答

%f用于浮点值。

尝试改用%lf。它是专为双打设计的(以前称为长浮点)。

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