8 पॉइंट द्वारा GN⁺ 2024-10-09 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • मुद्रा राशि को संभालना एक सामान्य computing कार्य है, लेकिन मुख्यधारा की programming languages में राशि को दर्शाने के लिए कोई मूल data type नहीं होता
  • इससे installment payment, foreign exchange trading, fee processing और tax collection जैसे कार्यों में rounding समस्याएँ पैदा हो सकती हैं
  • Money राशि की गणना और allocation को आसान बनाने में मदद करने वाली एक Kotlin लाइब्रेरी है
    • यह राशि के mathematical operations, percentage calculations और allocation को support करती है, जिससे विभिन्न use cases को model किया जा सकता है
    • यह cryptocurrency को भी default रूप से support करती है
  • Allocation feature
    • लाइब्रेरी की सबसे बड़ी खूबियों में से एक इसका allocation feature है
    • यह राशि को कई हिस्सों में बाँटते समय यह सुनिश्चित करता है कि कुल मूल राशि के बराबर रहे
    • उदाहरण के लिए, जब कोई ग्राहक USD 100.00 की खरीदारी का भुगतान तीन installments में करता है, तो rounding समस्या से होने वाले नुकसान को रोका जा सकता है
  • Allocation method
    • allocate() method का उपयोग करके ऐसे परिणाम सुनिश्चित किए जाते हैं जिनमें मूल राशि से कोई अंतर न हो
    • अनुपात के अनुसार allocation करने के लिए Percentage values की list दी जाती है
    • डिफ़ॉल्ट रूप से लाइब्रेरी अंतर को अपने आप allocate करती है, लेकिन इसे इच्छित allocation strategy के अनुसार समायोजित किया जा सकता है
  • समापन
    • यह लेख लाइब्रेरी की क्षमताओं का संक्षिप्त परिचय है
    • API को संक्षिप्त बनाए रखते हुए Android development support तथा persistence और serialization सुविधाओं का धीरे-धीरे विस्तार करने की योजना है
    • उम्मीद है कि मौजूदा version Kotlin projects में राशि को संभालने वाले लोगों के लिए उपयोगी होगा

GN⁺ का सार

  • राशि को संभालना programming में एक सामान्य काम है, लेकिन rounding समस्याओं के कारण यह जटिल हो सकता है
  • Money लाइब्रेरी इन समस्याओं को हल करने के लिए बनाई गई Kotlin लाइब्रेरी है, जो राशि की सटीक allocation और calculation को support करती है
  • यह लाइब्रेरी 306 currencies और 2283 cryptocurrencies को support करती है, इसलिए Kotlin projects में राशि को संभालने के लिए उपयोगी है
  • समान सुविधाओं वाले अन्य projects में Java की Joda-Money लाइब्रेरी आदि शामिल हैं

1 टिप्पणियां

 
GN⁺ 2024-10-09
Hacker News की राय
  • infix functions का उपयोग थोड़ा अजीब लगता है

    • Kotlin में API डिज़ाइन करते समय, शायद सामान्य extension functions या extension properties का उपयोग किया जाता
    • यह जानने की जिज्ञासा है कि plus और minus को overload करने के बजाय "increaseBy" और "decreaseBy" क्यों चुना गया
  • लाइब्रेरी के लिए बधाई और इसे साझा करने के लिए धन्यवाद

    • F# या C# की unit system धन-गणना के समान हो सकती है
    • Rust में सटीकता पर केंद्रित एक backtester विकसित किया जा रहा है, और assets का मूल्यांकन currency में होता है
    • simulation के दौरान क्या यह मान लेना ठीक है कि exchange हमेशा काम करता है, यह जानने की जिज्ञासा है
    • यह जानने की जिज्ञासा है कि exchange rates के लिए कोई public data उपलब्ध है या नहीं
    • ट्रेड करते समय कौन-सा exchange rate चुनना चाहिए, यह जानने की जिज्ञासा है
    • rounding के लिए कोई सबसे अच्छा तरीका है या नहीं, यह जानने की जिज्ञासा है
    • क्या tax को तुरंत काट लेना अच्छा है, यह जानने की जिज्ञासा है
    • inflation को model करना है या नहीं, इस पर विचार चल रहा है; फिलहाल इसे नज़रअंदाज़ करके अंत में adjust करने की योजना है
  • इससे Rebol के money type की usability याद आती है

    • Rebol की type system बहुत expressive थी
    • उम्मीद है कि ऐसी experience देने वाली और लाइब्रेरियाँ होंगी
  • money handling के दौरान आने वाले edge cases पर सवाल

    • अलग-अलग currencies के मान जोड़ने पर runtime exception आने की उम्मीद है
    • यह जानने की जिज्ञासा है कि $2.00 को 3 से विभाजित करते समय rounding rules निर्दिष्ट किए जा सकते हैं या नहीं
    • user input parse करते समय अतिरिक्त digits को कैसे handle किया जाता है, यह जानने की जिज्ञासा है
    • digit rules से बाहर जाने पर लाइब्रेरी कैसे व्यवहार करती है, यह जानने की जिज्ञासा है
  • custom currencies के समर्थन को पसंद किया गया

    • currency symbols क्षेत्र के अनुसार अलग हो सकते हैं, इसलिए सावधानी ज़रूरी है
    • CLDR dataset का उपयोग currency display को संभालने वाली अधिकांश implementations में किया जाता है
  • यह अजीब है कि spreadsheet languages money को अच्छी तरह support नहीं करतीं

    • spreadsheets के साथ automation अच्छा लगता है, और types को गंभीरता से लेने वाली languages में चौंकाने वाले परिणाम मिल सकते हैं
  • C# का decimal type money calculations के लिए उपयुक्त है

  • टिप्पणियों से बहुत कुछ सीखा गया, और यह लाइब्रेरी के अगले iteration में मदद करेगा

  • लाइब्रेरी से अधिक, ऐसी thorough test suite चाहिए जो सभी edge cases को संभाले

    • strict types के उपयोग पर विचार है
    • यह अजीब लगता है कि कई low-level programming languages अभी भी uint64, size_t आदि का उपयोग करती हैं
  • लगता है कि यह सभी requirements पूरी करता है, और money handling की मुख्य कठिनाइयों पर अच्छी चर्चा है