तर्कसंगत डेटा प्रकार
कुछ प्रोग्रामिंग भाषाएं 1/3 और -11/17 जैसी तर्कसंगत संख्याओं को बिना पूर्णांकन के दर्शाने और उन पर अंकगणित करने के लिए एक अंतर्निहित (आदिम) तर्कसंगत डेटा प्रकार प्रदान करती हैं। उदाहरण हैं ratio सामान्य लिस्प का प्रकार, और बीजगणितीय गणना के लिए अधिकांश भाषाओं द्वारा प्रदान किए गए अनुरूप प्रकार, जैसे कि मेथेमेटिका और मेपल सॉफ्टवेयर कई भाषाएँ जिनमें अंतर्निहित तर्कसंगत प्रकार नहीं है, फिर भी इसे लाइब्रेरी (कंप्यूटर विज्ञान)-परिभाषित प्रकार के रूप में प्रदान करती हैं।
प्रतिनिधित्व
उस प्रकार के एक चर या मान को आम तौर पर एक अंश (गणित) एम/एन के रूप में दर्शाया जाता है जहां एम और एन दो पूर्णांक (कंप्यूटर विज्ञान) संख्याएं हैं, या तो एक निश्चित या मनमाना सटीक अंकगणित के साथ। भाषा के आधार पर, हर को शून्य से विभाजित करने पर गैर-शून्य होने के लिए बाध्य किया जा सकता है, और दो संख्याओं को कम रूप में रखा जा सकता है (1 को छोड़कर किसी भी सामान्य [[भाजक]] के बिना)।
तर्कसंगत डेटा प्रकार का समर्थन करने वाली भाषाएं आमतौर पर ऐसे मूल्यों के निर्माण के लिए विशेष वाक्यविन्यास प्रदान करती हैं, और बुनियादी अंकगणितीय संचालन ('+', '-', '×', '/', पूर्णांक शक्ति (गणित)) और तुलना (') का भी विस्तार करती हैं। =', '<', '>', '≤') उन पर कार्रवाई करने के लिए - या तो मूल रूप से या भाषा द्वारा प्रदान की गई ऑपरेटर ओवरलोडिंग सुविधाओं के माध्यम से। इन परिचालनों को संकलक द्वारा पूर्णांक मशीन निर्देशों के अनुक्रम में या लाइब्रेरी (कंप्यूटर विज्ञान) कॉल में अनुवादित किया जा सकता है। समर्थन अन्य परिचालनों तक भी बढ़ाया जा सकता है, जैसे कि फ़ॉर्मेटिंग, किसी पूर्णांक या तैरनेवाला स्थल मान को पूर्णांकित करना, आदि। गणित की तरह, वे भाषाएं अक्सर पूर्णांक मान की व्याख्या एक इकाई हर के साथ तर्कसंगत मान के बराबर करती हैं।
भाषा समर्थन
अंतर्निर्मित या कोर लाइब्रेरी:
- C++ ने C++ मानक लाइब्रेरी की सामग्री के रूप में संकलन-समय तर्कसंगत अंकगणित के लिए समर्थन शामिल किया है
<ratio>हेडर C++11 से। - क्लोजर तर्कसंगत संख्याओं पर अंकगणित कर सकता है और उन्हें दर्शाने के लिए एक शाब्दिक रूप प्रदान करता है।
- गो (प्रोग्रामिंग भाषा) मानक लाइब्रेरी में तर्कसंगत संख्याएं प्रदान करता है,
math/bigपैकेट। - J (प्रोग्रामिंग भाषा) आधार भाषा में तर्कसंगत संख्याएँ प्रदान करता है। उदाहरण के लिए,
1r3एक तिहाई है. J में परिमेय अंश और हर दोनों के लिए मनमाने ढंग से सटीक अंकगणितीय पूर्णांक का उपयोग करते हैं, जिससे मनमाने ढंग से सटीक गैर-पूर्णांक की अनुमति मिलती है। उदाहरण के लिए,12683021339465478347804472r7322545784478161858100577तीन से 50 दशमलव अंकों के वर्गमूल को दर्शाता है।[1] - जूलिया (प्रोग्रामिंग भाषा) परिमेय ऑपरेटर के साथ परिमेय संख्याएँ प्रदान करती है,
//. उदाहरण के लिए,6//9 == 2//3 && typeof(-4//9) == Rational{Int64}.[2] - हास्केल (प्रोग्रामिंग भाषा) एक प्रदान करता है
Rationalप्रकार, जो वास्तव में एक उपनाम हैRatio Integer(Ratioकिसी के लिए तर्कसंगत संख्याओं को लागू करने वाला एक बहुरूपी प्रकार हैIntegralअंश और हर के प्रकार)। अंश का निर्माण % ऑपरेटर का उपयोग करके किया जाता है।[3] - OCaml की Num लाइब्रेरी मनमानी-सटीक तर्कसंगत संख्याओं को लागू करती है।
- पर्ल:
Math::BigRatकोर मॉड्यूल मनमाना-सटीक तर्कसंगत संख्याओं को लागू करता है। वहbigratपारदर्शी बिगरैट समर्थन को चालू करने के लिए प्राग्मा का उपयोग किया जा सकता है। - राकू (प्रोग्रामिंग भाषा): डिफ़ॉल्ट रूप से उपयोग करें
Rat[4] प्रकार (सीमित परिशुद्धता के साथ तर्कसंगत संख्याएँ)।FatRat[5] डेटा प्रकार मनमाना-सटीक तर्कसंगत संख्याओं को लागू करता है। - पायथन (प्रोग्रामिंग भाषा): मानक पुस्तकालय में शामिल है
Fractionमॉड्यूल में कक्षाfractions.[6] - रूबी (प्रोग्रामिंग भाषा): विशेष सिंटैक्स का उपयोग करके मूल समर्थन।
- स्मॉलटॉक a का उपयोग करके तर्कसंगत संख्याओं का प्रतिनिधित्व करता है
Fractionप्रपत्र में वर्गp/qकहाँpऔरqमनमाने आकार के पूर्णांक हैं। अंकगणितीय संक्रियाओं को लागू करना*,+,-,/, भिन्नों में एक इरेड्यूसिबल भिन्न लौटाता है।
बाहरी पुस्तकालयों के साथ:
- C (प्रोग्रामिंग भाषा) और C++ के लिए जीएनयू मल्टीपल प्रिसिजन अरिथमेटिक लाइब्रेरी जैसी परियोजनाएं हैं।
- अपाचे कॉमन्स मैथ लाइब्रेरी जावा (प्रोग्रामिंग भाषा) के लिए तर्कसंगत संख्याएँ प्रदान करती है
Fractionकक्षा।
सामान्य लिस्प
कॉमन लिस्प मनमाने आकार की परिमेय संख्याओं के लिए एक संख्यात्मक डेटा प्रकार प्रदान करता है: RATIO.[7]
1/3
⇒ 1/3
परिमेय संख्या का प्रकार है RATIO:
(type-of 1/3)
⇒ RATIO
दो पूर्णांकों को विभाजित करने पर एक परिमेय संख्या प्राप्त हो सकती है और एक परिमेय संख्या को गुणा करने पर एक पूर्णांक संख्या प्राप्त हो सकती है:
(/ 6 8)
⇒ 3/4
(* 3/4 16)
⇒ 12
अंश और हर को समानार्थी कार्यों का उपयोग करके प्राप्त किया जा सकता है, जो तर्कसंगत रूप को विहित रूप में कम करता है और क्रमशः उस रूप के अंश या हर की गणना करता है:[8]
(numerator 12/16)
⇒ 3
(denominator 12/16)
⇒ 4
बड़े पूर्णांकों के साथ गणना करके एक बड़ी परिमेय संख्या लौटाना:
(/ (1- (expt 2 200)) (1- (expt 2 43)))
⇒ 1606938044258990275541962092341162602522202993782792835301375/8796093022207
क्लोजर
<पूर्व> (प्रिंट (+ 1/10 2/10))
⇒ 3/10
</पूर्व>
जूलिया
julia> 1//10 + 2//10
3//10
हास्केल
मॉड्यूल में डेटा.अनुपात <पूर्व> (1% 10) + (2% 10)
⇒ 3 % 10
</पूर्व>
रैकेट (पीएलटी योजना)
> (+ 1/10 2/10)
3/10
राकु
राकू (प्रोग्रामिंग भाषा) प्रदान करता है Rat डिफ़ॉल्ट रूप से टाइप करें।
<सिंटैक्सहाइलाइट लैंग= pl6 > मेरा $v = 0.2; मान लीजिए कि {$v} {$v.^name} है और इसमें अंश {$v.numerator} और हर {$v.denominator} है;
- ⇒ 0.2 चूहा है और इसका अंश 1 और हर 5 है
</सिंटैक्सहाइलाइट>
<सिंटैक्सहाइलाइट लैंग= pl6 > मान लीजिए 0.1 + 0.2
- ⇒ 0.3
</सिंटैक्सहाइलाइट>
<सिंटैक्सहाइलाइट लैंग= pl6 > मान लीजिए (0.1 + 0.2 - 0.3).fmt( .17f )
- ⇒ 0.00000000000000
</सिंटैक्सहाइलाइट>
<सिंटैक्सहाइलाइट लैंग= pl6 > मान लीजिए 1 / (0.1 + 0.2 - 0.3)
- ⇒ स्ट्रेंजल को स्ट्रेंज पर लागू करते समय शून्य से विभाजित करने का प्रयास करें
</सिंटैक्सहाइलाइट>
रूबी
2.1 या नए में विशेष सिंटैक्स का उपयोग करना:
irb(main):001:0> puts 1/10r + 2/10r
3/10
=> nil
संदर्भ
- ↑ "Vocabulary/NumericPrecisions - J Wiki".
- ↑ "Complex and Rational Numbers — Julia Language development documentation". docs.julialang.org. Archived from the original on 2012-07-15.
- ↑ "The Haskell 98 Library Report: Rational Numbers".
- ↑ "Class Rat".
- ↑ "Class FatRat".
- ↑ "Fractions — Rational numbers — Python 3.10.0 documentation".
- ↑ Common Lisp HyperSpec: RATIO
- ↑ Function NUMERATOR, DENOMINATOR at the Common Lisp HyperSpec
- Donald Knuth, The Art of Computer Programming, vol. 2. Addison-Wesley.