2011-03-03 117 views
0

我已经编写了一个程序,它可以与3D坐标(即x,y,z)一起使用。我的程序关于变量类型“double”的问题

输入数据就像

50903.85 21274.97 15.03 
50903.57 21274.96 15.08 
50903.33 21274.95 15.17 

我得到了一些更多的列输出。所以,我为我的输出文件获得了相同的x,y,z。

50903.85 21274.97 15.03 
50903.57 21274.96 15.08 
50903.33 21274.95 15.17 

所以,我的程序正常工作,我猜。

然后,我使用的另一个数据集,具有比以前的数据更多的数字,

512330.98 5403752.71 330.39 
512331.01 5403754.18 329.44 
512331.06 5403755.59 329.56 

和我的输出是等;

512331 5.40375e+006 330.39 
512331 5.40375e+006 329.44 
512331 5.40376e+006 329.56 

在这里,我无法获得真正的价值。并且x值也被舍入。我不能认为应该是什么原因?

在我的程序中,我用“double”为x,y,z值赋值变量。所以,我想知道什么是最大的数值可以被推荐加倍?

如果有人需要使用非常长的值,那么相关的变量应该是什么?

+0

看看本页:http://www.cplusplus.com/reference/iostream/manipulators/setprecision/和这一个:http://www.cplusplus.com/reference/iostream/manipulators/scientific/ – 2011-03-03 23:45:11

回答

1

这些数字,例如5.40375e + 006,是表示双打的另一种方式。当它们变得足够大时,它们默认以科学记数法打印。 5.40375e + 006是5.40375 * 10^6或5403750.

0

双打有大约16位小数精度(source)的,所以你不应该有任何问题就在这里,除非你正在打印花车。