2009-10-08 15 views

Respuesta

5

Declarar los campos como un número de coma flotante. Desde sqllite datatype doc, el tipo de base de datos es REAL. Este es un número de punto flotante de 8 bytes que es un tipo Objective-C double, NSDouble o NSNumber.

+0

Secundo esto. Declarar la variable como un verdadero lugar de un entero y usar sqlite3_column_double para leer el valor como un doble. – lostInTransit

+0

gracias por señalarme el tipo de datos sqllite, sé que está en algún lugar pero no puedo encontrar ese documento –

13

No hay tal cosa como un número entero de coma flotante. Son mutuamente excluyentes en un nivel fundamental (números de punto flotante bien pueden caer en los límites enteros, pero usted consigue la idea): P.

Pero la forma de obtener flotadores es mediante el uso de la función sqlite3_column_double(sqlite3_stmt *, int).

NSNumber *f = [NSNumber numberWithFloat:(float)sqlite3_column_double(stmt, col)]; 
+0

funciona de maravilla gracias –

-1

Para obtener información adicional, sqlite3 utiliza un sistema de tipo de datos dinámico. así que cualquier cosa más allá de estos:

  • NULL
  • INTEGER
  • VERDADERO
  • TEXTO
  • BLOB

son sólo sirve para indicar a SQLite (técnicamente, de afinidad), y va a terminar decidiendo por sí mismo qué tipo es o no es.

http://www.sqlite.org/datatype3.html

las funciones que devuelven dobles, enteros, etc son parte de la API de SQLite C todo lo posible para darle lo que quiere .... así que lo que está almacenado en una columna potencialmente puede ser convertido por SQLite si lo que estás pidiendo es diferente de lo que está en el db.

http://www.sqlite.org/c3ref/column_blob.html

a mitad de camino hacia abajo, hay una mesa de práctica que haremos saber qué esperar.

2
NSNumber *num; 
int temp = (float)sqlite3_column_double(walkstatement, 3); 
num = [[NSNumber alloc]initWithInt:temp]; 
NSLog(@"%@",num); 

Este código funcionó para mí ..

Cuestiones relacionadas