आपके प्रश्न में कई व्याख्याएं हो सकती हैं।
यदि यह केवल कोणों के लिए है और डिस्क या डिवाइस पर भंडारण के लिए है, तो मैं आपको एक पूरी तरह से अलग तकनीक का उपयोग करके अपने मूल्यों को स्टोर करने का सुझाव दूंगा: 32 बिट पूर्णांक के रूप में स्टोर करें।
int encodedAngle = (int)(value * (0x7FFFFFFF/180.0));
इसे पुनर्प्राप्त करने के लिए, इसके विपरीत करें।
double angle = (encodedAngle/(0x7FFFFFFF/180.0));
इस तरह आपके पास साइन के लिए 180 डिग्री और 1 बिट के लिए पूर्ण 31 बिट रिज़ॉल्यूशन है।
आप अपने मूल्यों को रैम में रखने के लिए भी इस तरह उपयोग कर सकते हैं, इस कवरेज की लागत सीधे युगल के साथ काम की तुलना में अधिक है, लेकिन यदि आप अपनी याददाश्त कम रखना चाहते हैं लेकिन उच्च रिज़ॉल्यूशन उच्च है तो यह काफी अच्छा काम कर सकता है। लागत इतनी अधिक नहीं है, केवल/से पूर्णांक/से गुणा करने के लिए एक रूपांतरण और एक गुणा, आधुनिक प्रोसेसर इसे बहुत ही कम समय में करेंगे, और चूंकि एक्सेस मेमोरी कम है, अगर सूची में बहुत कुछ है मूल्यों का, आपका कोड प्रोसेसर कैश के साथ अधिक अनुकूल होगा।
आपका संकल्प 180/((2^31) - 1) = 8.38190318 × 10^-8
डिग्री, बुरा नहीं :)
स्रोत
2011-10-28 20:49:50
लंबे समय तक -180 से 180 तक और अक्षांश -90 से 9 0 तक अक्षांश होते हैं। – caf
अच्छा बिंदु, बीमार इसे सही करें। – Robert