2012-08-22 10 views
6

मैं एक स्ट्रिंग से अपने Arduino पर एक फ्लोट पढ़ने के लिए एक जीपीएस पढ़ने की कोशिश कर रहा हूँ। स्ट्रिंग सभी अंकों को ठीक से संभालती है, लेकिन जब मैं इसे फ्लोट करने के लिए विभाजित करता हूं तो मैं अपने अंकों में से 4 खो देता हूं। यहाँ मेरी कोड है:फ़्लोट्स को विभाजित करते समय अंकों का नुकसान C++ (Arduino)

gpsStrings[0].replace(".", ""); 
lat = gpsRawData[0].toFloat(); 
lat = lat/1000000.0; 

एक स्ट्रिंग अभी भी दशमलव बिंदु है कि यह एक ही बात में जो परिणाम में पर .toFloat का उपयोग करना, दशमलव बिंदु के बाद ही दो नंबर।

उदाहरण संख्या:

42427898 :: 42.43 - what happens 
42427898 :: 42.427898 - what I want to happen 

उत्तर

5

ठीक है मैं गलत था, डिफ़ॉल्ट प्रिंट फ़ंक्शन केवल सटीकता के दो अंकों का उपयोग करता है। तो मुझे यह बताना था कि मैं कितने अंक बयान चाहता था।

print(lat, 20); 

धारावाहिक की निगरानी जहां

print(lat) 

केवल दो देता है पर परिशुद्धता के 20 अंक देंगे।

0

आप एक नाव के बजाय एक डबल का उपयोग करना चाहते।

अधिक जानकारी के लिए http://en.wikipedia.org/wiki/Primitive_data_type और http://en.wikipedia.org/wiki/Double_precision#Double-precision_examples देखें।

+1

मुझे एक ही परिणाम मिलते हैं। Arduino युगल पर फ्लोट से अधिक सटीक नहीं हैं। वे अंकों की संख्या को पकड़ सकते हैं। http://arduino.cc/en/Reference/Double – Steven

+0

मुझे लगता है, यह काफी दुर्भाग्यपूर्ण है .. टिप के लिए धन्यवाद – ZnArK

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

  • कोई संबंधित समस्या नहीं^_^