2011-02-13 126 views
0

我正在使用Android上的PhoneGap API。 API模擬webSQL進行存儲。我遇到了一個問題,我不確定是否將其歸因於我對JavaScript的有限知識,或者我在PhoneGap/WebSQL中缺少的東西。長期以來,我通過WebSQL將UNIX時代時間戳存儲爲FLOAT。webSQL浮點問題

 tx.executeSql("INSERT INTO timeline VALUES(0, 10, 100, 1297618964.65, '2011-02-13')"); 
     tx.executeSql("INSERT INTO timeline VALUES(0, 8, 120, 1297618985.65, '2011-02-13')"); 

這些值然後用一個簡單的SELECT語句查詢,用下面的代碼閱讀:

 for (i = 0; i < results.rows.length; i++){ 
      console.log(results.rows.item(i).timestamp); 
      timestamps.push(results.rows.item(i).timestamp); 
      weights.push(results.rows.item(i).intensity);  
     } 

的問題是,「時間戳」值被截斷。日誌顯示1.29762e + 09,我繪製的結果圖反映了這種精度損失。

在這裏使用parseFloat或toFixed會導致相同的精度損失,只是採用不同的可打印格式。表格定義使用FLOAT作爲時間戳,所以在我對它們做任何事情之前,爲什麼我的值會發生變化,所以我有點不知所措。

回答

0

你可以在表定義中使用DOUBLE作爲字段嗎?

爲什麼你的時間戳是浮點數?你需要那樣嗎?在javascript時間戳記是從epoch開始的整數毫秒。我在寫一個應用程序的webSQL中存儲這樣的時間戳沒有問題。 小數點後是否有毫秒?那麼也許你可以乘以1000並存儲爲long int,並在從db中加載後再次除以1000。