मनमानी परिशुद्धता वाला एक Decimal टाइप बनाइए।
कंप्यूटिंग में गैर-पूर्णांक वास्तविक संख्याओं को दिखाने का सबसे आम तरीका फ्लोटिंग पॉइंट संख्याएँ हैं, और ये IEEE 754 में परिभाषित एक आम मानक हैं। ये बहुत लचीली हैं और हर तरह के काम आती हैं, लेकिन इनकी कुछ सीमाएँ भी हैं। प्रसिद्ध उदाहरण यह है: फ्लोटिंग पॉइंट अंकगणित में 0.1 + 0.2 != 0.3.
इस समस्या का समाधान यह है कि मनमानी परिशुद्धता वाली गैर-पूर्णांक वास्तविक संख्याओं को दिखाने का एक ऐसा तरीका निकाला जाए जिसमें कुछ भी न खोए। यह मेमोरी या प्रोसेसिंग की गति के मामले में फ्लोटिंग पॉइंट संख्याओं से कम कुशल हो सकता है। उद्देश्य सटीक परिणाम देना है।
Decimal चाहे एक कस्टम टाइप हो, फिर भी हमें इन्हें संख्याओं की तरह इस्तेमाल कर पाना चाहिए: ==, <, >, +, - और * ऑपरेटर सब Decimal पर अपेक्षा के अनुसार काम करने चाहिए। इसे आसान रखने के लिए आपको भाग लागू करना ज़रूरी नहीं है, क्योंकि मनमानी परिशुद्धता वाला भाग बहुत जल्दी काबू से बाहर हो सकता है। (मनमानी परिशुद्धता वाली 1/3 को आप कैसे दिखाएँगे?)
Rust में कस्टम टाइप पर ये ऑपरेशन पाने का तरीका यह है कि आप उसके लिए संबंधित ट्रेट लागू करें। खास तौर पर आपको कम से कम PartialEq, PartialOrd, Add, Sub और Mul लागू करने होंगे। सख्ती से कहें तो, चूँकि दशमलव संख्याएँ एक पूर्ण क्रम बनाती हैं, आपको Eq और Ord भी लागू करने चाहिए, हालाँकि इन टेस्ट में उन ट्रेट की जाँच नहीं की जाती।
इस अभ्यास को bigdecimal क्रेट का उपयोग करके लागू करना बहुत आसान होगा। ऐसा मत कीजिए; यह काम खुद कीजिए।