2011-02-13 16 views
0

私はAndroid上でPhoneGap APIを使用しています。 APIはストレージ用のwebSQLをエミュレートします。私は問題に遭遇しました。私はそれをJavaScriptの限られた知識、またはPhoneGap/WebSQLで欠けているものに帰するかどうかはわかりません。webSQL浮動小数点問題

私は、UNIXエポックタイムスタンプをWebSQL経由でFLOATとして保存しています。

 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のタイムスタンプは、エポックが整数の時からミリ秒です。私はアプリケーションで私は書き込みWebSQLでこのようなタイムスタンプを格納する問題はありません。 小数点以下はミリ秒ですか?多分1000を掛けてlong intとして保存し、dbからロードした後に再び1000を割り算することができます。

関連する問題