提问人:AMM 提问时间:9/16/2008 最后编辑:Peter MortensenAMM 更新时间:5/23/2017 访问量:31874
如何使用“%f”以正确的精度将双精度值填充到字符串中
How to use "%f" to populate a double value into a string with the right precision
问:
我正在尝试使用这样的双精度值填充字符串:sprintf
sprintf(S, "%f", val);
但精度被削减到小数点后六位。我需要大约 10 位小数来提高精度。
如何实现这一目标?
答:
7赞
Yann Ramin
9/16/2008
#1
你想要的是一个修饰符:
sprintf(S, "%.10f", val);
man sprintf 将提供有关格式说明符的更多详细信息。
评论
0赞
Jeremy
9/16/2008
请注意:如果他使用双精度,使用“lf”会更正确吗?
0赞
EvilTeach
11/2/2008
浮点数仅携带大约 6 位精度。使用 %lf 表示双精度。
0赞
Tara
4/23/2016
@EvilTeach:错了。%f 表示双精度。浮点数没有格式说明符。看这个:stackoverflow.com/questions/25860850/......
9赞
Agnel Kurian
9/16/2008
#2
%[宽度]。[精度]
宽度应包含小数点。
%8.2 表示 8 个字符宽;点前 5 位,后 2 位。为该点保留一个字符。
5 + 1 + 2 = 8
1赞
Jegschemesch
9/16/2008
#3
有关更完整的参考,请参阅维基百科 printf 文章的“printf 格式占位符”部分和同一页面上的一个很好的示例。
1赞
dajobe
9/16/2008
#4
请注意 - sprintf 的输出将因 C 语言环境而异。这可能是也可能不是你想要的。请参见语言环境文档/手册页中的LC_NUMERIC。
1赞
EvilTeach
9/17/2008
#5
%f
用于浮点值。
请尝试改用。它是为双打(以前称为长浮子)设计的。%lf
double x = 3.14159265;
printf(“15.10lf\n”, x);
评论