2014-10-11 58 views
-2

我每0.02秒記錄一次數據,我的代碼將這些信息保存到一個製表符已刪除的文件正在產生一些特殊的結果,即使我每次加入0.02時間變量它開始是稍微偏離(我知道,當它圓潤它基本上是相同的,但它使我感到不適)。我如何得到它看起來像校正數據集中花車從0.2到0.19999994

output.println(time + "\t" + accelX + "\t" + accelY + "\t" + accelZ); 
time = time + 0.02; 

輸出給我(我離開了其他數據,因爲它以細會)

Time 0.02 0.04 0.06 0.08 0.099999994 0.1199999999 

應該

Time 0.02 0.04 0.06 0.08 0.1 0.12 
+4

[什麼每臺計算機科學家應該知道關於浮點運算(http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html) – cdhowie 2014-10-11 21:11:49

+5

爲什麼你有問題'javascript'嗎? Java和JavaScript是非常**不同的語言,運行在**非常**不同的環境中。 – 2014-10-11 21:14:19

+1

@ T.J.Crowder OP正在使用Processing,最初是一個Java框架,但之後也被移植到JavaScript中。這不符合標籤的理由,但我想這就是爲什麼它在那裏。 – kevinsa5 2014-10-12 15:47:13

回答

1

首先,不要使用雙精度浮點工作。接下來,使用printf而不是println,並指定輸出的有效數字。

例如這樣的事情,

output.printf("%5.2f %5.2f %5.2f %5.2f", time, accelX, accelY, accelZ);