2009-10-08 7 views

Odpowiedz

5

stwierdzenie pola jako liczby zmiennoprzecinkowej. Od sqllite datatype doc typ bazy danych jest PRAWDZIWY. Jest to 8-bajtowy numer zmiennoprzecinkowy, który jest typem podwójnym, NSDouble lub NSNumber w Objective-C.

+0

I ten drugi. Zadeklaruj zmienną jako REAL zamiast INTEGER i użyj sqlite3_column_double, aby odczytać wartość jako double. – lostInTransit

+0

dzięki za wskazanie mi sqllite datatype doc, wiem, że jest gdzieś w pobliżu, ale nie mogę znaleźć tego dokumentu –

13

Nie ma czegoś takiego jak liczba zmiennoprzecinkowa. Są wzajemnie wykluczające się na poziomie podstawowym (dobrze zmiennoprzecinkowe liczby mogą spaść na granicach całkowitych, ale masz pomysł): P.

Ale sposobem na wypłynięcie jest użycie funkcji sqlite3_column_double(sqlite3_stmt *, int).

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

działa świetnie dzięki –

-1

Aby uzyskać dodatkowe informacje, sqlite3 używa systemu typu danych dynamicznych. więc coś obok nich:

  • NULL
  • INTEGER
  • NIERUCHOMOŚCI
  • TEKST
  • BLOB

to tylko aluzje do sqlite (technicznie, powinowactwa), i będzie to koniec samodzielne decydowanie o tym, jaki typ jest lub nie jest.

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

funkcje, które zwracają podwójne, ints, etc są częścią sqlite C API próbować wszelkich starań, aby dać Ci to, co chcesz .... więc co jest przechowywane w kolumnie może być potencjalnie przekształcane przez SQLite jeśli to, o co prosisz, różni się od tego, co masz w db.

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

około połowie drogi w dół, tam jest poręczny stolik że pozwolę ci wiedzieć, czego się spodziewać.

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

Ten kod pracował dla mnie ..

Powiązane problemy