ভগ

ভগ্নাংশ মধ্যে Python

{one: "১টি অনুশীলনী", other: "%{count}টি অনুশীলনী"}

ভগ্নাংশ সম্পর্কে

fractions মডিউলটি আমাদের rational numbers তৈরি করতে এবং সেগুলো নিয়ে কাজ করতে দেয়: অর্থাৎ এমন ভগ্নাংশ, যার লব ও হর দুটিই ইন্টিজার।

উদাহরণস্বরূপ, 0.6666... আসন্ন float মানটির বদলে 2/3-কে একটি সঠিক ভগ্নাংশ হিসেবে সংরক্ষণ করা যায়।

ভগ্নাংশ তৈরি করা

int, float ও complex সংখ্যার মতো নয়, ভগ্নাংশের কোনো সরাসরি লিটারেল রূপ নেই। তবে ভগ্নাংশ কনস্ট্রাক্টরটি বেশ নমনীয়।

সবচেয়ে স্পষ্টভাবে, এটি দুটি ইন্টিজার নিতে পারে। সাধারণ গুণনীয়কগুলো স্বয়ংক্রিয়ভাবে বাদ পড়ে যায়, ফলে ভগ্নাংশটি তার "সরলতম রূপে" (ভগ্নাংশটিকে নির্ভুলভাবে প্রকাশ করে এমন ক্ষুদ্রতম ইন্টিজার) চলে আসে:

>>> from fractions import Fraction

>>> f1 = Fraction(2, 3) # 2/3
>>> f1
Fraction(2, 3)

>>> f2 = Fraction(6, 9)
>>> f2
Fraction(2, 3)  # automatically simplified

>>> f1 == f2
True

ভগ্নাংশ কনস্ট্রাক্টরটি স্ট্রিং আকারেও পার্স করতে পারে:

>>> f3 = Fraction('2/3')
>>> f3
Fraction(2, 3)

এটি float প্যারামিটার নিয়েও কাজ করতে পারে, তবে ভেতরে দশমিক মানটিকে বাইনারি হিসেবে প্রকাশ করার আসন্ন প্রকৃতির কারণে সমস্যা দেখা দিতে পারে। এই প্রকাশ-সমস্যা নিয়ে আরও জানতে দেখুন 0.30000000000000004 ওয়েবসাইটটি এবং Python ডকুমেন্টেশনের Floating Point Arithmetic: Issues and Limitations ।

ভগ্নাংশের সাথে ফ্লোট ব্যবহার করার সময় আরও নির্ভরযোগ্য ফলাফল পেতে আছে <fraction>.limit_denominator() মেথডটি।

.limit_denominator() আপনার নির্দিষ্ট কোনো চাহিদা থাকলে একটি ইন্টিজার প্যারামিটার নিতে পারে, তবে ডিফল্ট মানটিই (max_denominator=1000000) ভালোভাবে কাজ করতে পারে এবং একটি গ্রহণযোগ্য, সরল আসন্ন মান দিতে পারে।

>>> Fraction(1.2)
Fraction(5404319552844595, 4503599627370496)

>>> Fraction(1.2).limit_denominator()
Fraction(6, 5)

ভগ্নাংশ দিয়ে গাণিতিক কাজ

অন্য সংখ্যাসূচক টাইপের মতো ভগ্নাংশের সাথেও চিরচেনা arithmetic operators + - * / ** কাজ করে।

এক্সপ্রেশনে ইন্টিজার ও অন্য Fraction রাখা যায়, আর ফলাফলও আসে একটি Fraction হিসেবে। এক্সপ্রেশনে একটি float থাকলে আউটপুটও float আসে, ফলে নির্ভুলতা (সম্ভবত) কমে যেতে পারে।

>>> Fraction(2, 3) + Fraction(1, 4) # addition
Fraction(11, 12)

>>> Fraction(2, 3) * Fraction(6, 5) # multiply fractions
Fraction(4, 5)

>>> Fraction(2, 3) * 6 / 5 # fraction with integers
Fraction(4, 5)

>>> Fraction(2, 3) * 1.2  # fraction with float -> float
0.7999999999999999

>>> Fraction(2, 3) ** 2  # exponentiation with integer
Fraction(4, 9)

ভগ্নাংশে ও ভগ্নাংশ থেকে রূপান্তর

মাঝের হিসাবগুলোর নির্ভুলতা ধরে রাখার জন্য ভগ্নাংশ দারুণ, তবে চূড়ান্ত আউটপুটের জন্য আপনি হয়তো ভগ্নাংশ চাইবেন না।

লব ও হর আলাদা আলাদাভাবে বা একটি টাপল হিসেবে পাওয়া সম্ভব (tuples নিয়ে পরের একটি কনসেপ্টে আলোচনা করা হবে):

>>> Fraction(2, 3).numerator
2
>>> Fraction(2, 3).denominator
3
>>> Fraction(2, 3).as_integer_ratio()
(2, 3)

Python-এর নানা স্ট্যান্ডার্ড সংখ্যাসূচক ফাংশনও সেই ফলাফলই দেয়, যা int ও float টাইপ নিয়ে কাজ করলে আপনি আশা করতেন:

>>> round(Fraction(11, 3))
4

>>> from math import floor, ceil
>>> floor(Fraction(11, 3))
3
>>> ceil(Fraction(11, 3))
4

>>> float(Fraction(11, 3))
3.6666666666666665
GitHub-এর মাধ্যমে সম্পাদনা করুন লিংকটি নতুন একটি উইন্ডো বা ট্যাবে খুলবে