Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन में दशमलव निश्चित बिंदु और फ़्लोटिंग पॉइंट अंकगणित

फ़्लोटिंग पॉइंट नंबरों को स्मृति में आधार 2 बाइनरी अंश के रूप में दर्शाया जाता है। परिणामस्वरूप फ्लोटिंग पॉइंट अंकगणितीय ऑपरेशन कई बार अजीब हो सकते हैं। 0.1 और 0.2 का जोड़ निम्न प्रकार से कष्टप्रद परिणाम दे सकता है -

>>> 0.1 + 0.2
0.30000000000000004

वास्तव में यह बाइनरी फ्लोटिंग पॉइंट प्रतिनिधित्व की प्रकृति है। यह किसी भी प्रोग्रामिंग भाषा में प्रचलित है। पायथन तेजी से और सही ढंग से गोल फ्लोटिंग-पॉइंट अंकगणितीय प्रदर्शन करने के लिए एक दशमलव मॉड्यूल प्रदान करता है।

दशमलव मॉड्यूल को फ़्लोटिंग पॉइंट्स का प्रतिनिधित्व करने के लिए डिज़ाइन किया गया है जैसा कि कोई उन्हें व्यवहार करना चाहता है, और अंकगणितीय ऑपरेशन परिणाम अपेक्षाओं के अनुरूप हैं। प्रतिनिधित्व और संचालन का सटीक स्तर 28 स्थानों तक सेट किया जा सकता है।

दशमलव मॉड्यूल दशमलव वर्ग को परिभाषित करता है। दशमलव वस्तु को एक पूर्णांक, संख्यात्मक प्रतिनिधित्व के साथ एक स्ट्रिंग या इसके निर्माता को पैरामीटर के रूप में एक टपल देकर घोषित किया जा सकता है

>>> from decimal import Decimal
>>> d1 = Decimal(10)
>>> d1
Decimal('10')
>>> d2 = Decimal('10')
>>> d2
Decimal('10')

एक टपल पैरामीटर में तीन तत्व होते हैं, चिह्न (सकारात्मक के लिए 0, ऋणात्मक के लिए 1), अंकों का एक टपल और घातांक। उदाहरण के लिए

>>> d3 = Decimal((1, (1, 2,3, 4), 2))
>>> d3
Decimal('-1.234E+5')

एक विशिष्ट परिशुद्धता के फ़्लोटिंग पॉइंट नंबर का प्रतिनिधित्व करने का एक और सुविधाजनक तरीका getcontext() finction द्वारा वर्तमान थ्रेड का संदर्भ वातावरण प्राप्त करना और दशमलव ऑब्जेक्ट के लिए सटीकता सेट करना है।

>>> from decimal import Decimal, getcontext
>>> getcontext().prec = 5
>>> d3 = Decimal(10)
>>> d4 = Decimal(3)
>>> d3/d4
Decimal('3.3333')

संदर्भ अंकगणितीय संक्रियाओं के लिए परिवेश हैं जिनका उपयोग सटीकता को निर्धारित करने और गोलाई नियमों को परिभाषित करने के साथ-साथ घातांक के लिए सीमा को सीमित करने के लिए किया जाता है।

decimal.getcontext() - सक्रिय थ्रेड के लिए वर्तमान संदर्भ लौटाएं।

decimal.setcontext(c) - सक्रिय थ्रेड के लिए वर्तमान संदर्भ को c पर सेट करें।

निम्नलिखित राउंडिंग मोड स्थिरांक दशमलव मॉड्यूल में परिभाषित किए गए हैं -

ROUND_CEILING अनंत की ओर गोल।
ROUND_DOWN शून्य की ओर गोल करें।
ROUND_FLOOR गोल - अनंत की ओर।
ROUND_HALF_DOWN शून्य की ओर जा रहे संबंधों के साथ निकटतम के लिए गोल करें।
ROUND_HALF_EVEN निकटतम सम पूर्णांक में जाने वाले संबंधों के साथ निकटतम के लिए गोल करें।
ROUND_HALF_UP शून्य से दूर जाने वाले संबंधों के साथ निकटतम तक गोल करें।
ROUND_UP शून्य से दूर।
ROUND_05UP शून्य से पूर्णांकित करें यदि शून्य की ओर पूर्णांकित करने के बाद अंतिम अंक 0 या 5 होता; अन्यथा शून्य की ओर गोल।

निम्नलिखित कोड स्निपेट संदर्भ वस्तु के सटीक और गोलाई मापदंडों का उपयोग करता है

>>> from decimal import *
>>> getcontext().prec = 5
>>> getcontext().rounding = ROUND_UP
>>> d1 = Decimal(100)
>>> d2 = Decimal(6)
>>> d1/d2
Decimal('16.667')

दशमलव वस्तुओं पर अंकगणितीय संचालन

सभी सामान्य अंकगणितीय ऑपरेशन दशमलव वस्तुओं पर किए जाते हैं, सामान्य फ़्लोट्स की तरह।

>>> a = Decimal('2.4')
>>> b = Decimal('1.2')
>>> a + b
Decimal('3.6')
>>> a - b
Decimal('1.2')
>>> b - a
Decimal('-1.2')
>>> a * b
Decimal('2.88')
>>> a / b
Decimal('2')

अंकगणितीय संक्रिया एक दशमलव संकार्य और एक पूर्णांक संकार्य पर की जा सकती है। हालांकि सामान्य फ़्लोटिंग पॉइंट ऑब्जेक्ट ऑपरेशंस अमान्य हैं।

>>> a = Decimal('2.4')
>>> c = 2.1
>>> a + c
Traceback (most recent call last):
File "<pyshell#37>", line 1, in <module>
a+c
TypeError: unsupported operand type(s) for +: 'decimal.Decimal' and 'float'

सभी अंकगणितीय संक्रियाओं के लिए एक ही अपवाद होता है।

दशमलव वस्तु के साथ शेष (%) ऑपरेटर का व्यवहार सामान्य संख्यात्मक प्रकारों से थोड़ा अलग होता है। यहां, परिणाम का संकेत भाजक के बजाय लाभांश का है

>>> -7%3
2
>>> 7%-3
-2
>>> Decimal(-7) % Decimal(3)
Decimal('-1')
>>> Decimal(7) % Decimal(-3)
Decimal('1')

दशमलव.from_float() - यह फ़ंक्शन सटीक बाइनरी प्रतिनिधित्व के साथ सामान्य फ्लोट को दशमलव ऑब्जेक्ट में परिवर्तित करता है। परिणामस्वरूप from_float(0.1) और Decimal('0.1') समान नहीं हैं।

>>> d1 = Decimal('0.1')
>>> d2 = Decimal.from_float(0.1)
>>> d1,d2
(Decimal('0.1'), Decimal('0.1000000000000000055511151231257827021181583404541015625'))

यह लेख पायथन मानक पुस्तकालय के दशमलव मॉड्यूल में परिभाषित कार्यक्षमता के उपयोग की व्याख्या करता है।


  1. पायथन में स्वरूपित दिनांक और समय कैसे प्राप्त करें?

    आप strftime फ़ंक्शन का उपयोग करके स्वरूपित दिनांक और समय प्राप्त कर सकते हैं। यह एक प्रारूप स्ट्रिंग को स्वीकार करता है जिसका उपयोग आप अपना वांछित आउटपुट प्राप्त करने के लिए कर सकते हैं। इसके द्वारा समर्थित निर्देश निम्नलिखित हैं। निर्देश अर्थ %a लोकेल का संक्षिप्त कार्यदिवस का नाम %A ल

  1. पायथन में वर्तमान दिनांक और समय कैसे प्राप्त करें?

    आप कई तरीकों का उपयोग करके वर्तमान तिथि और समय प्राप्त कर सकते हैं। डेटाटाइम मॉड्यूल का उपयोग करने का सबसे आसान तरीका है। इसका एक फ़ंक्शन है, अब, जो वर्तमान दिनांक और समय देता है। उदाहरण import datetime now = datetime.datetime.now() print("Current date and time: ") print(str(now)) आउटपुट

  1. पायथन में एक फ्लोटिंग नंबर को निश्चित चौड़ाई में कैसे प्रारूपित करें?

    आप पाइथन में फ़्लोटिंग पॉइंट नंबरों को एक निश्चित चौड़ाई में प्रारूपित करने के लिए स्ट्रिंग स्वरूपण का उपयोग कर सकते हैं। उदाहरण के लिए, यदि आप चाहते हैं कि दशमलव बिंदुओं को 12 वर्णों की चौड़ाई और दशमलव के दाईं ओर 4 अंकों के साथ संरेखित किया जाए, तो आप निम्न का उपयोग कर सकते हैं: >>> x = 12