如何使用"f"填充的双重价值的成一串用正确的精确度
-
09-06-2019 - |
题
我试图填充串用双重价值的使用 sprintf
是这样的:
sprintf(S, "%f", val);
但是,精确是被切断的六位小数。我需要大约10小数位数的精确度。
怎么可能实现吗?
解决方案
%[宽].[精密]
宽度应当包括小数点。
%8.2装置8个字符的宽;5个数字之前和2之后。一个字符的保留这一点。
5 + 1 + 2 = 8
其他提示
什么你想要的是一个调节剂:
sprintf(S, "%.10f", val);
人sprintf将会有更多的详细信息的格式的说明符。
为了更完整的参考,请参阅 维基百科 printf 文章,"部分printf格式占位" 和 一个很好的例子在同一页上.
照顾-输出的sprintf会有所不同,通过C区域设置。这可以或不可以你想要什么。见LC_NUMERIC在区域docs/人页。
%f
是漂浮的价值观。
尝试使用 %lf
代替。它被设计为一倍(它使用被称为长浮).
双x=3.14159265;
printf("15.10lf
",x);
不隶属于 StackOverflow