2011-03-03 87 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)的,所以你不應該有任何問題就在這裏,除非你正在打印花車。