私は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を使用しているので、私は何かをする前に自分の値が変換されている理由を少し失っています。