我们希望确保在将双精度值转换为字符串时保留多达10个小数点值。双精度10点精度
当我们尝试%e或%f时,它不会保留5个以上的小数点。 当我们尝试%.14f时,小值(小于1.0e-20)未正确转换为字符串。
什么格式字符串用于保持双精度值的10位小数点?
我们希望确保在将双精度值转换为字符串时保留多达10个小数点值。双精度10点精度
当我们尝试%e或%f时,它不会保留5个以上的小数点。 当我们尝试%.14f时,小值(小于1.0e-20)未正确转换为字符串。
什么格式字符串用于保持双精度值的10位小数点?
尝试%.17g
以双倍问题的最适当格式打印。
printf("%.17g\n", 10000.);
printf("%.17g\n", 240.0008);
printf("%.17g\n", 0.0000000013);
10000
240.0008
1.3000000000000001e-009
我希望你做知道的float
型(单精度浮点),只有永远保持精密六个小数位数?没有转换符可以给精密称不存在开始与...
连接(double
型保持约15位精度,仅供参考。):http://en.wikipedia.org/wiki/Floating_point#Internal_representation
更新: JasonD有答案到您更新的问题。保持这种后天性。
我正在寻找双值转换。更新后的帖子 – Maanu
只有数字很小时,浮点数才能存储此小数点,否则使用double。
#include <stdio.h>
int main(void)
{
double v = 0.12345678912345;
printf("%.17g %.14f \n", v, v);
return 0;
}
显示的结果::
在这个例子中%.17g
和%.14f
被毫无问题的工作
0.12345678912345 0.12345678912345
从文档
˚F:十进制浮点,小写392.65
Ê:科学记数法(尾数/指数),小写3.9265e + 2
克:使用最短表示:%e或%F 392.65
因此,使用%.14f
它是罚款
编辑:
小值(小于1.0e-20)未正确转换为字符串。
要显示超过20小数点,你应该使用长双......但是如果你只需要存储1.0E-20,不需要打印超过6小数,浮点数可以拿着它。
对于长时间双倍,您需要使用类似%.21Lg
。例如:
#include <stdio.h>
int main(void)
{
long double v = 0.123456789123456789123456789;
printf("%.21Lg %.21Lf \n", v, v);
return 0;
}
不,你不需要“长双”来保存/显示1.0e-20。即使是一个简单的'float'也可以保持小至1.0e-37('FLT_MIN')的值... – DevSolar
的确,如果值很小,一个简单的浮点数就可以保存它...我将修复它 – benjarobin
您是否试过'%.10g'? –
http://stackoverflow.com/questions/7228438/convert-double-float-to-string,可以对你有用。 –