webSQL浮点问题

时间:2011-02-13 19:07:21

标签: javascript cordova

我正在使用Android上的PhoneGap API。 API模拟webSQL以进行存储。我遇到了一个问题,我不确定是否将其归因于我对JavaScript的有限知识,或者是我在PhoneGap / WebSQL中缺少的东西。

长话短说,我通过WebSQL将UNIX纪元时间戳存储为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作为时间戳,所以在我对它们做任何事情之前,为什么我的值被转换了,我有点不知所措。

1 个答案:

答案 0 :(得分:0)

你可以对表定义中的字段使用DOUBLE吗?

为什么你的时间戳是浮动的?你需要那样的吗?在javascript时间戳中,自纪元以来为毫秒,为整数。我在写入的应用程序中将这些时间戳存储在webSQL中没有问题。 你在小数点后有几毫秒?那么也许你可以乘以1000并存储为long int并在从db加载后再次除以1000。