Haskell:
সংখ্যা নির্ণয়
কিভাবে:
হাস্কেল Prelude
-এ রাউন্ডিং অপারেশনের জন্য round
, ceiling
, floor
, এবং truncate
ফাংশন ব্যবহার করে।
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