关于C#:如何使用“%f”将双精度值填充到具有正确精度的字符串中

关于C#:如何使用“%f”将双精度值填充到具有正确精度的字符串中

How to use “%f” to populate a double value into a string with the right precision

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

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

但是精度被削减到小数点后六位。 我需要大约十进制的精度。

如何实现?


%[width]。[precision]

宽度应包含小数点。

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

5 +1 + 2 = 8


您想要的是一个修饰符:

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

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


%f用于浮点值。

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

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


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


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


推荐阅读