我试图填充串用双重价值的使用 sprintf 是这样的:

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

但是,精确是被切断的六位小数。我需要大约10小数位数的精确度。

怎么可能实现吗?

有帮助吗?

解决方案

%[宽].[精密]

宽度应当包括小数点。

%8.2装置8个字符的宽;5个数字之前和2之后。一个字符的保留这一点。

5 + 1 + 2 = 8

其他提示

什么你想要的是一个调节剂:

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

人sprintf将会有更多的详细信息的格式的说明符。

照顾-输出的sprintf会有所不同,通过C区域设置。这可以或不可以你想要什么。见LC_NUMERIC在区域docs/人页。

%f 是漂浮的价值观。

尝试使用 %lf 代替。它被设计为一倍(它使用被称为长浮).

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top