ভাসমান পয়েন্ট সংখ্যাগুলি বেশিরভাগ দশমিক সংখ্যাকে হুবহু উপস্থাপন করতে পারে না, তাই আপনি যখন কোনও ভাসমান বিন্দু আক্ষরিক টাইপ করেন আপনি আসলে সেই আক্ষরিকের একটি আনুমানিকতা পান। আপনার টাইপ করা সংখ্যার চেয়ে আনুমানিকতা বড় বা ছোট হতে পারে।
দশমিক বা ভগ্নাংশে কাস্ট করে আপনি ভাসমান পয়েন্ট সংখ্যাটির সঠিক মান দেখতে পাবেন।
>>> from decimal import Decimal
>>> Decimal(0.01)
Decimal('0.01000000000000000020816681711721685132943093776702880859375')
>>> from fractions import Fractio
>>> Fraction(0.01)
Fraction(5764607523034235, 576460752303423488)
আমাদের অযোগ্য আক্ষরিক কারণে ত্রুটিটি খুঁজে পেতে আমরা ভগ্নাংশ প্রকারটি ব্যবহার করতে পারি।
>>> float((Fraction(1)/Fraction(0.01)) - 100)
-2.0816681711721685e-15
আমরা 100 টির কাছাকাছি দানাদার ডাবল নির্ভুলতা ভাসমান পয়েন্ট সংখ্যাগুলি নমপির পরবর্তীটি ব্যবহার করে এটি জানতে পারি।
>>> from numpy import nextafter
>>> nextafter(100,0)-100
-1.4210854715202004e-14
এটি থেকে আমরা অনুমান করতে পারি যে নিকটতম ভাসমান পয়েন্ট সংখ্যাটি 1/0.01000000000000000020816681711721685132943093776702880859375আসলে 100 টি।
1//0.01এবং এর মধ্যে পার্থক্যটি int(1/0.01)গোলাকার। 1 // 0.01 একক পদক্ষেপে পরবর্তী পুরো সংখ্যায় সঠিক ফলাফলটিকে গোল করে। সুতরাং আমরা 99 এর ফলাফল পেয়েছি।
অন্যদিকে int (1 / 0.01) দুটি পর্যায়ে গোল করে, প্রথমে ফলাফলটি নিকটতম ডাবল নির্ভুলতা ভাসমান পয়েন্ট সংখ্যাটি (যা হ'ল 100) গোল করে, তারপরে এটি গোল করে যে ভাসমান পয়েন্ট সংখ্যাটি পরবর্তী সংখ্যার নীচে (যা হয়) আবার ঠিক 100)।