दो तरीके मैं, न तो बहुत दुर्भाग्य से चतुर के बारे में पता है, लेकिन इस और अधिक पर्यावरण की एक सीमा मुझे के बजाय है :-)
पहले sprintf
"%.50f"
प्रारूप स्ट्रिंग के साथ एक बड़े बफर की संख्या है, पीछे की ओर शून्य को बंद करें, फिर दशमलव बिंदु के बाद वर्णों को गिनें। यह printf
परिवार द्वारा ही सीमित होगा। या आप उपयोगकर्ता द्वारा इनपुट के रूप में स्ट्रिंग का उपयोग कर सकते हैं (sprintf
फ्लोटिंग पॉइंट मान में डालने के बजाय), ताकि फ़्लोटिंग पॉइंट समस्याओं को पूरी तरह से टालने के लिए।
दूसरा पूर्णांक भाग घटाना है, फिर इसे 10 से गुणा करें और फिर शून्य होने तक पूर्णांक भाग घटाएं। यह फ़्लोटिंग पॉइंट नंबरों के कम्प्यूटर प्रस्तुति की सीमाओं से सीमित है - प्रत्येक चरण में आपको उस संख्या की समस्या मिल सकती है जिसे बिल्कुल प्रदर्शित नहीं किया जा सकता है (इसलिए .2155 वास्तव में .21549 99 99 998 हो सकता है)।
count = 0
num = abs(num)
num = num - int(num)
while num != 0:
num = num * 10
count = count + 1
num = num - int(num)
आप संख्या की तरह आप मिल जाएगा पता है (उदाहरण के लिए, वे सब हो जाएगा: की तरह निम्नलिखित (अपरीक्षित, मेरे सिर है, जो एक COMx-35 के साथ बराबर के बारे में है को छोड़कर) कुछ दशमलव बिंदु के बाद 0 से 4 अंक), आप इसे ठीक से करने के लिए मानक फ़्लोटिंग पॉइंट "चाल" का उपयोग कर सकते हैं। उदाहरण के लिए, के बजाय के लिए:?
while num != 0:
उपयोग
while abs(num) >= 0.0000001:
क्या आप स्पष्ट कर सकते हैं "संख्या कितनी दशमलव है"? क्या आपका मतलब है, संख्या के आंशिक भाग में कितने दशमलव अंक हैं? – Doug
हां, आपकी धारणा सही है। – Milan