2009-10-08 9 views
5

मैं चल बिन्दु दशमलव SQLite db सेआप आईफोन पर एक एसक्लाइट डेटाबेस से फ्लोटिंग नंबर (असली) कैसे पढ़ते हैं?

मैं पूर्णांक के रूप में डेटाबेस में वेरिएबल प्रकार बनाया है पढ़ने की जरूरत है

मैं NSInteger चर

जो भागों इतना बदल चाहिए मैं चल पढ़ सकते हैं करने के लिए sqlite3_column_int साथ पढ़ रहा हूँ डेटाबेस से बिंदु पूर्णांकों जवाब के लिए

धन्यवाद खेद इस विषय

उत्तर

5

में एक नौसिखिया im एक चल बिन्दु संख्या के रूप में क्षेत्रों घोषित। sqllite datatype doc से डेटाबेस प्रकार वास्तविक है। यह एक 8 बाइट फ्लोटिंग पॉइंट नंबर है जो एक उद्देश्य-सी डबल, एनएसडीबल या एनएसएनंबर प्रकार है।

+0

मैं दूसरा यह। वैरिएबल को एक इंटेग्रर के बजाय एक वास्तविक के रूप में घोषित करें और मान को डबल के रूप में पढ़ने के लिए sqlite3_column_double का उपयोग करें। – lostInTransit

+0

मुझे स्क्लेइट डेटाटाइप डॉक्टर को इंगित करने के लिए धन्यवाद, मुझे पता है कि यह कहीं और है लेकिन मुझे वह दस्तावेज नहीं मिला है –

13

फ़्लोटिंग-पॉइंट पूर्णांक जैसी कोई चीज़ नहीं है। वे एक मौलिक स्तर पर पारस्परिक रूप से अनन्य हैं (अच्छी तरह से फ़्लोटिंग पॉइंट नंबर पूर्णांक सीमाओं पर पड़ सकते हैं लेकिन आपको विचार मिलता है): पी।

लेकिन sqlite3_column_double(sqlite3_stmt *, int) फ़ंक्शन का उपयोग करके फ़्लोट प्राप्त करने का तरीका है।

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

यह बहुत अच्छा काम करता है –

-1

अतिरिक्त जानकारी के लिए, sqlite3 गतिशील डेटा प्रकार प्रणाली का उपयोग करता है। इसलिए इन पिछले कुछ भी:

  • शून्य
  • पूर्णांक
  • असली
  • पाठ
  • ब्लॉब

सिर्फ SQLite के लिए (तकनीकी रूप से, आत्मीयता) संकेत है, और यह समाप्त कर देंगे कर रहे हैं अपने आप पर निर्णय लेना कि यह किस प्रकार का है या नहीं।

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

कार्यों कि आदि लौट युगल, ints, SQLite सी एपीआई का हिस्सा हैं अपनी पूरी कोशिश आप को देने के लिए आप क्या चाहते हैं .... तो क्या एक स्तंभ में संग्रह किया गया है संभावित SQLite द्वारा परिवर्तित किया जा सकता यदि आप जो मांग रहे हैं वह डीबी में क्या है उससे अलग है।

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

के बारे में नीचे मिडवे, एक आसान तालिका दूँगा कि आप जानते हैं कि क्या उम्मीद करने के लिए नहीं है।

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

इस कोड मेरे लिए काम किया ..

संबंधित मुद्दे