2013-06-01 10 views
20

मैं जानता हूँ कि हास्केल देशी डेटा प्रकार है जो आप वास्तव में बड़ी पूर्णांकों तो बातेंहास्केल में उच्च परिशुद्धता फ़्लोटिंग पॉइंट नंबर?

तरह
>> let x = 131242358045284502395482305 
>> x 
131242358045284502395482305 

काम के रूप में की उम्मीद की अनुमति है। अगर वहाँ एक समान "बड़े परिशुद्धता फ्लोट" देशी संरचना मैं का उपयोग कर किया जा सकता है मैं सोच रहा था, इसलिए

>> let x = 5.0000000000000000000000001 
>> x 
5.0000000000000000000000001 

तरह बातें संभव हो सकता है। यदि मैं इसे हास्केल में दर्ज करता हूं, तो यह 15 तक नीचे गिर जाता है यदि मैं 15 दशमलव स्थानों (डबल परिशुद्धता) से आगे जाता हूं।

+1

ठीक है, निरंतर सटीक भिन्नताओं के लिए 'डेटा। रैटियो' में हमेशा 'तर्कसंगत' होता है। लेकिन आम तौर पर, उत्तर इस बात पर निर्भर करता है कि आपको समर्थन के लिए किन कार्यों की आवश्यकता है। – Vitus

+0

मुझे लगता है ['तर्कसंगत]] (http://hackage.haskell.org/packages/archive/base/latest/doc/html/Prelude.html#t:Rational) आपके उद्देश्यों के लिए ठीक नहीं है, यानी आपको इसकी आवश्यकता है 'फ़्लोटिंग 'उदाहरण? – leftaroundabout

+2

उच्चतम संभावित परिशुद्धता के लिए: http://www.haskell.org/haskellwiki/Exact_real_arithmetic (एईआरएन कार्यान्वयन कुछ समय के लिए काम नहीं किया है ... मुझे नहीं पता कि अभी अन्य उम्मीदवार हैं या नहीं) – luqui

उत्तर

16

पर निर्भर करता है आप के लिए वास्तव में क्या देख रहे हैं:

  • Float और Double - काफी आप क्या जानते हैं और तैरता और डबल्स से "प्रेम" सब अन्य भाषाओं में।
  • Rational जो Integer रों
  • FixedPoint के Ratio है - इस पैकेज मनमाने ढंग से आकार नियत बिन्दु मान प्रदान करता है। उदाहरण के लिए, यदि आप एक संख्या चाहते हैं जो 64 अभिन्न बिट्स और 64 fractional बिट्स द्वारा दर्शाया गया है तो आप FixedPoint6464 का उपयोग कर सकते हैं। यदि आप एक संख्या चाहते हैं जो 1024 अभिन्न बिट्स और 8 आंशिक बिट्स है तो का उपयोग FixedPoint1024_8 उत्पन्न करने के लिए करें।
  • संपादित करें: और हाँ, मैंने अभी ऊपर उल्लिखित numbers पैकेज के बारे में सीखा - बहुत अच्छा।
+1

'बेस' में भी [डेटा.फिक्स्ड] (http://www.haskell.org/ghc/docs/latest/html/libraries/base/Data-Fixed.html) है। – hammar

+4

[साइक्लोटॉमिक नंबर] (http://hackage.haskell.org/package/cyclotomic) के लिए एक लाइब्रेरी भी है जो अभी भी सटीक हैं, सभी राशन और अधिक शामिल हैं, और कम्प्यूटेबल वास्तविकताओं की तुलना में अधिक निर्णायक भविष्यवाणी करते हैं। –

7

हास्केल में उच्च-परिशुद्धता फ़्लोटिंग-पॉइंट संख्याएं नाइटली नहीं हैं।

इस उद्देश्य के लिए पैकेज/मॉड्यूल/लाइब्रेरी के लिए, मैं this answer to another post का संदर्भ दूंगा। एक उदाहरण भी है जो दिखाता है कि इस पैकेज का उपयोग कैसे करें, जिसे numbers कहा जाता है।

+1

मुझे यकीन नहीं है कि यह पैकेज वास्तव में आपकी मांगों के अनुरूप है या नहीं। बस इसे देखें। ;) –

+0

इसके अलावा [hmpfr पैकेज] (http://hackage.haskell.org/package/hmpfr) पर एक नज़र डालें। – vinc17

0

आप एक उच्च परिशुद्धता की जरूरत है/तेजी से/चल बिन्दु गणना, आप FFI और लंबे समय युगल उपयोग करने के लिए, के रूप में देशी हास्केल प्रकार अभी तक लागू नहीं किया गया है (https://ghc.haskell.org/trac/ghc/ticket/3353 देखें) पड़ सकता है।

संबंधित मुद्दे