আপনি আপনার উত্তর গোল করতে চান।
round(value,significantDigit)
এটি করার সাধারণ সমাধান, তবে এটি কখনও কখনও অঙ্ক যেমন গণিতের দৃষ্টিকোণ থেকে প্রত্যাশা করে তখনই কাজ করে না যখন অঙ্কটি অবিলম্বে নিকৃষ্টতর (বাম দিকে) আপনি যে অঙ্কটি ঘুরছেন তা রয়েছে 5
।
অবিশ্বাস্য আচরণের কয়েকটি উদাহরণ এখানে:
>>> round(1.0005,3)
1.0
>>> round(2.0005,3)
2.001
>>> round(3.0005,3)
3.001
>>> round(4.0005,3)
4.0
>>> round(1.005,2)
1.0
>>> round(5.005,2)
5.0
>>> round(6.005,2)
6.0
>>> round(7.005,2)
7.0
>>> round(3.005,2)
3.0
>>> round(8.005,2)
8.01
আপনার অভিপ্রায় ধরে নেওয়া যাক বিজ্ঞান পরিসংখ্যান ঐতিহ্যগত রাউন্ডইং করতে হয়, এই একটি কুশলী মোড়কের পেতে হয় round
ফাংশন পরিশ্রমী হিসাবে প্রয়োজন প্রত্যাশিত import
মত অতিরিক্ত কাপড় Decimal
।
>>> round(0.075,2)
0.07
>>> round(0.075+10**(-2*6),2)
0.08
আহা! সুতরাং এর ভিত্তিতে আমরা একটি ফাংশন করতে পারি ...
def roundTraditional(val,digits):
return round(val+10**(-len(str(val))-1), digits)
মূলত এটি স্ট্রিংটিতে একটি সত্যিই ছোট মান যুক্ত করে এটি অনাকাঙ্ক্ষিত উদাহরণগুলিতে এটি সঠিকভাবে গোল করে জোর করতে বাধ্য করে যেখানে এটি round
আপনি যখন প্রত্যাশা করেন তখন এটি ফাংশনটির সাথে সাধারণত হয় না । যোগ করার জন্য একটি সুবিধাজনক মান 1e-X
যেখানে X
সংখ্যা স্ট্রিং আপনি ব্যবহার করার চেষ্টা করছি দৈর্ঘ্য হল round
প্লাসে 1
।
ব্যবহারের পদ্ধতিকে 10**(-len(val)-1)
ইচ্ছাকৃতভাবে করা হয়েছিল, কারণ এ স্থানটি শিফটকে জোর করার জন্য আপনি সবচেয়ে বড় সংখ্যক সংখ্যক সংখ্যক যুক্ত করতে পারেন, পাশাপাশি এটিও নিশ্চিত করে যে আপনি যে মানটি যুক্ত করেন তা কখনই দশমিক .
অনুপস্থিত থাকলেও বৃত্তাকার পরিবর্তন করে না। আমি আরও বিয়োগের জন্য কেবলমাত্র 10**(-len(val))
একটি কনডিডিশনাল দিয়ে ব্যবহার করতে পারি ... তবে কেবল সর্বদা বিয়োগ করা সহজ যেটি এই দশমিক সংখ্যার প্রযোজ্য পরিসীমাটিকে পরিবর্তিত করবে না যা এই কর্মক্ষেত্রটি সঠিকভাবে পরিচালনা করতে পারে। আপনার মানগুলি ধরণের সীমাতে পৌঁছে গেলে এই পদ্ধতিটি ব্যর্থ হবে, এটি ব্যর্থ হবে তবে বৈধ দশমিক মানের প্রায় পুরো পরিসরের জন্য এটি কাজ করা উচিত।if (val>1)
1
1
সুতরাং সমাপ্ত কোডটি এমন কিছু হবে:
def main():
printC(formeln(typeHere()))
def roundTraditional(val,digits):
return round(val+10**(-len(str(val))-1))
def typeHere():
global Fahrenheit
try:
Fahrenheit = int(raw_input("Hi! Enter Fahrenheit value, and get it in Celsius!\n"))
except ValueError:
print "\nYour insertion was not a digit!"
print "We've put your Fahrenheit value to 50!"
Fahrenheit = 50
return Fahrenheit
def formeln(c):
Celsius = (Fahrenheit - 32.00) * 5.00/9.00
return Celsius
def printC(answer):
answer = str(roundTraditional(answer,2))
print "\nYour Celsius value is " + answer + " C.\n"
main()
... আপনার প্রত্যাশিত ফলাফলগুলি দেওয়া উচিত।
এটি সম্পাদন করার জন্য আপনি দশমিক লাইব্রেরিটিও ব্যবহার করতে পারেন তবে আমার প্রস্তাবিত মোড়কটি সহজ এবং কিছু ক্ষেত্রে পছন্দসই হতে পারে।
সম্পাদনা করুন: ব্ল্যাকঙ্কহিট ধন্যবাদ জানানোর জন্য যে 5
ফ্রিঞ্জ কেসটি এখানে কিছু নির্দিষ্ট মানের জন্য ঘটে থাকে ।