Haskell:
संख्याओं को पूर्णांक बनाना
कैसे:
हास्केल round
, ceiling
, floor
, और truncate
फंक्शन्स का उपयोग Prelude
से गोलीकरण ऑपरेशनों के लिए करता है।
import Prelude
main :: IO ()
main = do
let num = 3.567
print $ round num -- 4
print $ ceiling num -- 4
print $ floor num -- 3
print $ truncate num -- 3
-- एक विशेष दशमलव स्थान तक गोल करना Prelude में नहीं है।
-- यहाँ एक अनुकूलित फंक्शन है:
let roundTo n f = (fromInteger $ round $ f * (10^n)) / (10.0^^n)
print $ roundTo 1 num -- 3.6
गहराई से विचार
ऐतिहासिक रूप से, संख्यात्मक विश्लेषण और कंप्यूटर विज्ञान में गोलाकार महत्वपूर्ण होता है क्योंकि गणनाओं में त्रुटि संचय को न्यूनतम करना महत्वपूर्ण होता है, विशेष रूप से इससे पहले कि फ्लोटिंग-पॉइंट प्रतिनिधित्व को IEEE 754 के साथ मानकीकृत किया गया था।
किस पर गोल करें? round
आपको निकटतम पूर्णांक पर ले जाता है—ऊपर या नीचे। ceiling
और floor
हमेशा क्रमशः निकटतम पूर्णांक की ओर ऊपर या नीचे गोल करते हैं, जबकि truncate
बस दशमलव बिंदुओं को छोड़ देता है।
इन फंक्शन्स के विकल्प में अनुकूलित तर्क, जैसे कि हमारा roundTo
, शामिल हो सकता है, या आप अधिक जटिल आवश्यकताओं के लिए लाइब्रेरी (जैसे कि Data.Fixed) को खींच सकते हैं।
round
में आधे रास्ते के मामलों को हास्केल कैसे संभालता है, इसके कारण अप्रत्याशित परिणामों के लिए सावधान रहें (यह निकटतम सम पूर्णांक को गोल करता है)।
देखें भी
- गोलीकरण फंक्शन्स के लिए हास्केल प्रील्यूड दस्तावेजीकरण: https://hackage.haskell.org/package/base-4.16.1.0/docs/Prelude.html
- फ्लोटिंग-पॉइंट अंकगणित पर हास्केल विकी: https://wiki.haskell.org/Floating_point_arithmetic
- अधिकांश भाषाओं में फ्लोटिंग-पॉइंट को कैसे संभाला जाता है, इस पर IEEE 754-2008 मानक: https://ieeexplore.ieee.org/document/4610935