我想转换双浮在C,但要准确地保留小数点没有任何变化......C:double转换成浮动,保留小数点精度
例如,比方说,我有
double d = 0.1108;
double dd = 639728.170000;
double ddd = 345.2345678
现在纠正我,如果我错了,我知道浮点精度约为点后5个数字。我可以得到这些五位数字吗?使得上述结果如下:
float f = x(d);
float ff = x(dd);
float fff = x(ddd);
printf("%f\n%f\n%f\n", f, ff, fff);
它应该打印
0.1108
639728.17000
345.23456
精度极限之后所有的数字(我假定为5)将被截断。
浮点精度更准确地表述为“的显著位数”,而不是“数小数点后的位数'。漂浮物很可能不会特别准确地代表12345678.12345。 – 2010-08-16 23:25:52
除了关于浮点数的表示方式的错误理解之外,您正在寻找的函数'x'是从double到float'(float)'的类型转换。如果您没有将舍入模式从最接近偶数的默认值更改,则此演算计算最接近您要转换的“double”的“浮点数”。没有比这个更好的转换,所以如果这个失去了太多的精度,你的味道,保持你的'双',因为它们。 – 2010-08-16 23:56:40
截断不是最准确的方法来转换他们 - 345.2345678 更接近345.23457比345.23456 – caf 2010-08-17 00:00:25