#javascript #cordova
#javascript #кордова
Вопрос:
Я работаю с PhoneGap API на Android. API эмулирует WebSQL для хранения. Я столкнулся с проблемой, и я не уверен, приписывать ли это моим ограниченным знаниям JavaScript или чему-то, чего мне не хватает в PhoneGap / WebSQL.
Короче говоря, я сохраняю временные метки эпохи UNIX в виде числа с плавающей запятой через 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);
}
Проблема в том, что значение «timestamp», похоже, усечено. Журнал показывает 1.29762e 09, и результирующие графики, которые я строю, отражают эту потерю точности.
Использование parseFloat или toFixed здесь приводит к той же потере точности, просто в другом формате для печати. Определение таблицы использует FLOAT для метки времени, поэтому я немного не понимаю, почему мои значения преобразуются таким образом, прежде чем я что-либо с ними сделаю.
Ответ №1:
можете ли вы использовать DOUBLE для поля в определении таблицы?
и почему ваша временная метка имеет значение float? они вам нужны такими? в javascript временные метки — это миллисекунды, прошедшие с эпохи, как целое число. у меня нет проблем с сохранением таких временных меток в WebSQL в приложении, которое я пишу. у вас есть миллисекунды после десятичной точки? тогда, возможно, вы можете умножить на 1000 и сохранить как long int и снова разделить 1000 после загрузки его из базы данных.