से अंक निकालने double x
को देखते हुए, और यह मानते हुए कि यह [0,1]
में है। उदाहरण है कि एक्स = 0.3 द्विआधारी में, (दशमलव बिंदु के बाद 10 अंक रखते हुए), यह प्रतिनिधित्व किया है के लिए मान लें के रूप मेंएक फ्लोट सी ++
x=0.0100110011...
मैं कुछ सी ++ कोड जो 10 अंक दशमलव बिंदु के बाद पता चला निकाल देंगे लिखना चाहते हैं । दूसरे शब्दों में मैं पूर्णांक (0100110011) _2 निकालना चाहता हूं।
अब मैं काफी बिट स्थानांतरण और (भोली) समाधान जो मैं इस समस्या के लिए है करने के लिए नया हूँ निम्नलिखित
int temp= (int) (x*(1<<10))
तब द्विआधारी आवश्यक 10 अंक होगा में temp
है।
क्या यह उपरोक्त प्रक्रिया को करने का एक सुरक्षित तरीका है? या क्या ऐसा करने के लिए सुरक्षित/अधिक सही तरीके हैं?
नोट: मैं अंक एक चरित्र सरणी के रूप में निकाला नहीं करना चाहती। मैं इसके लिए विशेष रूप से एक पूर्णांक (या हस्ताक्षरित पूर्णांक) चाहता हूं। ऐसा करने का कारण यह है कि octrees की पीढ़ी में, अंतरिक्ष में बिंदुओं को हैश कुंजी को मोर्टन कीज़ नामक अपनी स्थिति के आधार पर दिया जाता है। इन चाबियों को आमतौर पर पूर्णांक के रूप में संग्रहीत किया जाता है। सभी बिंदुओं के लिए एकीकृत कुंजी प्राप्त करने के बाद उन्हें क्रमबद्ध किया जाता है। सैद्धांतिक रूप से इन चाबियों को निर्देशांक को [0,1] स्केल करके, बिट्स निकालने और उन्हें अंतःस्थापित करके प्राप्त किया जा सकता है।
10 बाइनरी अंक, या दशमलव अंक? –
* पूरे * मंटिसा को मुद्रित क्यों न करें, जितना ज़रूरी आवश्यक हो उतना ज़ीरो? –
@ ओली चार्ल्सवर्थ: कृपया संपादन देखें। मैंने अपने प्रश्न को स्पष्ट किया है। – smilingbuddha