如何使用"%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);