2009-10-08 7 views

Antwort

5

Deklarieren Sie die Felder als Gleitkommazahl. Von sqllite datatype doc ist der Datenbanktyp REAL. Dies ist eine 8-Byte-Gleitkommazahl, bei der es sich um einen Objective-C-Double-, NSDouble- oder NSNumber-Typ handelt.

+0

ich diese Sekunde. Deklarieren Sie die Variable als REAL anstelle von INTEGER und verwenden Sie sqlite3_column_double, um den Wert als Double zu lesen. – lostInTransit

+0

danke für das Zeigen mir sqllite Datentyp doc, ich weiß, es ist irgendwo um, aber ich kann nicht finden, dass Dokument –

13

Es gibt keine Fließkommazahl. Sie schließen sich gegenseitig auf einer fundamentalen Ebene aus (gut fließende Punktnummern können auf ganzzahlige Grenzen fallen, aber Sie bekommen die Idee): P.

Aber die Möglichkeit, Floats herauszubekommen, ist die Verwendung der sqlite3_column_double(sqlite3_stmt *, int)-Funktion.

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

es funktioniert super danke –

-1

Für weitere Informationen verwendet sqlite3 ein dynamisches Datentypsystem. so etwas Vergangenheit diese:

  • NULL
  • INTEGER
  • REAL
  • TEXT
  • BLOB

sind nur Hinweise auf sqlite (technisch, Affinität), und es wird am Ende selbst entscheiden, welcher Typ es ist oder nicht.

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

die Funktionen, die Doppelzimmer, Ints, etc sind Teil der SQLite-C-API versuchen, sein Bestes kehren Sie zu geben, was Sie wollen .... so was in einer Spalte gespeichert wird möglicherweise von SQLite umgerechnet werden können Wenn das, was Sie fragen, unterscheidet sich von dem, was in der db ist.

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

auf halbem Weg über unten gibt es eine praktische Tabelle ist, dass Sie wissen, was zu erwarten ist.

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

Dieser Code für mich gearbeitet ..