ট্র্যাক
/
Rust
Rust
/
অনুশীলনী
/
দশমিক সংখ্যা
দশমিক সংখ্যা

দশমিক সংখ্যা

মধ্যম

নির্দেশনা

ইচ্ছামতো প্রিসিশনের একটি Decimal টাইপ ইমপ্লিমেন্ট করুন।

কম্পিউটিংয়ে পূর্ণসংখ্যা নয় এমন বাস্তব সংখ্যা প্রকাশের সবচেয়ে কমন উপায় হলো ফ্লোটিং পয়েন্ট সংখ্যা, আর এটি একটি কমন স্ট্যান্ডার্ড, যা IEEE 754-এ সংজ্ঞায়িত। এগুলো খুবই নমনীয় ও বহুমুখী, তবে কিছু সীমাবদ্ধতাও আছে। বিখ্যাত উদাহরণ হলো, ফ্লোটিং পয়েন্ট অ্যারিথমেটিকে 0.1 + 0.2 != 0.3।

এই সমস্যার সমাধান হলো ইচ্ছামতো প্রিসিশনের পূর্ণসংখ্যা নয় এমন বাস্তব সংখ্যা মডেল করার আরেকটি, ক্ষতিহীন উপায় খুঁজে বের করা। মেমরি বা প্রসেসিং গতির দিক থেকে এটি ফ্লোটিং পয়েন্ট সংখ্যার চেয়ে কম দক্ষ হতে পারে; লক্ষ্য হলো নির্ভুল ফলাফল দেওয়া।

Decimal একটি কাস্টম টাইপ হলেও আমাদের এটি দিয়েও সংখ্যার মতো কাজ করতে পারা উচিত: ==, <, >, +, -, এবং * অপারেটরগুলোর সবগুলোই ডেসিমালের উপর প্রত্যাশামতো কাজ করা উচিত। সুবিধার জন্য ভাগ ইমপ্লিমেন্ট করা আপনার জন্য আবশ্যক নয়, কারণ ইচ্ছামতো প্রিসিশনের ভাগ খুব দ্রুতই হাতের বাইরে চলে যেতে পারে। (ইচ্ছামতো প্রিসিশনের 1/3 আপনি কীভাবে প্রকাশ করবেন?)

Rust-এ কাস্টম টাইপের উপর এসব অপারেশন পাওয়ার উপায় হলো তার জন্য প্রাসঙ্গিক ট্রেইটগুলো ইমপ্লিমেন্ট করা। বিশেষভাবে, আপনাকে অন্তত PartialEq, PartialOrd, Add, Sub, এবং Mul ইমপ্লিমেন্ট করতে হবে। কড়াভাবে বললে, যেহেতু ডেসিমাল সংখ্যাগুলো একটি টোটাল অর্ডারিং তৈরি করে, আপনার Eq এবং Ord-ও ইমপ্লিমেন্ট করা উচিত, যদিও এই টেস্টগুলো ওই ট্রেইট দুটি যাচাই করে না।

bigdecimal ক্রেট ব্যবহার করে এই অনুশীলনীটি ইমপ্লিমেন্ট করা খুবই সহজ হবে। তা করবেন না; নিজেই এটি ইমপ্লিমেন্ট করুন।


সূত্র

Peter Goodspeed-Niklaus
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি একটি নতুন উইন্ডো বা ট্যাবে খোলে
Rust Exercism

দশমিক সংখ্যা শুরু করতে প্রস্তুত?

Exercism-এ সাইন আপ করুন, Rust ট্র্যাকের 99টি অনুশীলনী আর সত্যিকারের মানুষের মেন্টরিং দিয়ে শিখুন ও দক্ষ হয়ে উঠুন, সম্পূর্ণ বিনামূল্যে।