এফ-স্ট্রিং সহ দশমিকের পরে নির্দিষ্ট অঙ্কগুলি


319

দশমিক বিন্দুর পরে অঙ্কের সংখ্যাটি ঠিক করার জন্য পাইথন এফ-স্ট্রিংগুলির সাথে কী সহজ উপায় আছে? (বিশেষত এফ-স্ট্রিং,। ফর্ম্যাট বা% এর মতো স্ট্রিং বিন্যাসের বিকল্প নয়)

উদাহরণস্বরূপ, ধরা যাক আমি দশমিক স্থানের পরে 2 অঙ্ক প্রদর্শন করতে চাই।

আমি কেমন করে ঐটি করি? যে বলা যাক

a = 10.1234

উত্তর:


475

আপনার ফর্ম্যাট এক্সপ্রেশন মধ্যে টাইপ নির্দিষ্টকারী অন্তর্ভুক্ত:

>>> a = 10.1234
>>> f'{a:.2f}'
'10.12'

33
পিইপি সহ আমি যে এফ-স্ট্রিং ফর্ম্যাটিং উদাহরণগুলি পেয়েছি তার মধ্যে কোনওটিই আপনি টাইপ স্পেসিফায়ার ব্যবহার করতে পারবেন না। আমি অনুমান করি আমার এটি অনুমান করা উচিত ছিল, তবে ডকসগুলি এটি কল করে।
গাফারম্যান 2112

আপনি ঠিক বলেছেন, বেশিরভাগ উদাহরণের বিন্যাস নির্দিষ্টকরণকারক নেই। পিইপিতে, হেক্স উদাহরণটি করে: f'input={value:#06x}'এবং তারিখের উদাহরণগুলি করে: {anniversary:%A, %B %d, %Y}এবং {date:%A}। আমি মনে করি মূল ব্যাখ্যা কোড সমতুল্য বিভাগে section
রোব

9
ওহ মানুষ, এটি চমত্কার এবং সহজ। এই উত্তরটি খুঁজে পেতে আমাকে কেন পুরো 45 সেকেন্ডের বেশি সময় লাগল? আপ গেম, গুগল
ম্যাট ফ্লেচার

2
এছাড়াও নোট করুন যে আপনি যদি f না লিখে থাকেন - f ': a: .2}' এটি মোট অঙ্কের সংখ্যা গণনা করবে এবং উত্তর হবে 10
ড্রকো

86

যখন এটি floatসংখ্যার দিকে আসে , আপনি ফর্ম্যাট স্পেসিফায়ার ব্যবহার করতে পারেন :

f'{value:{width}.{precision}}'

কোথায়:

  • value একটি সংখ্যার মূল্যায়ন যে কোনও অভিব্যক্তি
  • widthপ্রদর্শনের জন্য মোট ব্যবহৃত অক্ষরগুলির সংখ্যা নির্দিষ্ট করে, তবে valueপ্রস্থের চেয়ে নির্দিষ্ট স্থানের প্রয়োজন হলে অতিরিক্ত স্থান ব্যবহৃত হয়।
  • precision দশমিক বিন্দুর পরে ব্যবহৃত অক্ষরের সংখ্যা নির্দেশ করে

আপনি যা হারিয়েছেন তা হ'ল আপনার দশমিক মানের জন্য টাইপ স্পেসিফায়ার। এই লিঙ্কটিতে , আপনি ভাসমান পয়েন্ট এবং দশমিকের জন্য উপলভ্য প্রকারগুলি খুঁজে পাবেন।

f(ফিক্সড পয়েন্ট) উপস্থাপনা প্রকারটি ব্যবহার করে এখানে আপনার কয়েকটি উদাহরণ রয়েছে :

# notice that it adds spaces to reach the number of characters specified by width
In [1]: f'{1 + 3 * 1.5:10.3f}'
Out[1]: '     5.500'

# notice that it uses more characters than the ones specified in width
In [2]: f'{3000 + 3 ** (1 / 2):2.1f}' 
Out[2]: '3001.7'

In [3]: f'{1.2345 + 4 ** (1 / 2):9.6f}'
Out[3]: ' 3.234500'

# omitting width but providing precision will use the required characters to display the number with the the specified decimal places
In [4]: f'{1.2345 + 3 * 2:.3f}' 
Out[4]: '7.234'

# not specifying the format will display the number with as many digits as Python calculates
In [5]: f'{1.2345 + 3 * 0.5}'
Out[5]: '2.7344999999999997'

34

রবের উত্তরে যুক্ত করা: আপনি যদি না বরং আরও বড় সংখ্যা মুদ্রণ করতে চান তবে হাজার বিভাজক ব্যবহার করা একটি দুর্দান্ত সহায়তা হতে পারে (কমাটি নোট করুন)।

>>> f'{a*1000:,.2f}'
'10,123.40'

15

এফ স্ট্রিং ( আরও এখানে ) সহ ফর্ম্যাট স্পেসিফায়ার ব্যবহার করুন ।

  • দশমিকের সংখ্যা নিয়ন্ত্রণ করতে পারেন :
pi = 3.141592653589793238462643383279

print(f'The first 6 decimals of pi are {pi:.6f}.')
The first 6 decimals of pi are 3.141593.
  • আপনি শতাংশে রূপান্তর করতে পারেন :
grade = 29/45

print(f'My grade rounded to 3 decimals is {grade:.3%}.')
My grade rounded to 3 decimals is 64.444%.
  • আপনি মুদ্রণ ধ্রুবক দৈর্ঘ্যের মতো অন্যান্য কাজ করতে পারেন :
from random import randint
for i in range(5):
    print(f'My money is {randint(0, 150):>3}$')
My money is 126$
My money is   7$
My money is 136$
My money is  15$
My money is  88$
  • অথবা এমনকি কমা হাজার বিভাজক দিয়ে মুদ্রণ করুন :
print(f'I am worth {10000000000:,}$')
I am worth 10,000,000,000$

1
a = 10.1234

print(f"{a:0.2f}")

0.2f এ:

  • 0 অজগরকে প্রদর্শন করতে মোট সংখ্যার সীমা নির্ধারণের জন্য বলছে
  • .2 বলছে যে আমরা দশমিকের পরে মাত্র 2 ডিজিট নিতে চাই (ফলাফলটি একটি গোল () ফাংশনের মতো হবে)
  • f বলছে যে এটি একটি ফ্লোট নম্বর। আপনি যদি f ভুলে যান তবে এটি দশমিকের পরে 1 টি কম অঙ্ক মুদ্রণ করবে। এক্ষেত্রে দশমিকের পরে এটি হবে মাত্র 1 ডিজিট।

সংখ্যার জন্য এফ স্ট্রিংয়ের একটি বিস্তারিত ভিডিও https://youtu.be/RtKUsUTY6to?t=606


-2

গোল করার জন্য ...

import datetime as dt
now = dt.datetime(2000, 1, 30, 15, 10, 15, 900)
now_mil = round(now.microsecond/1000)
print(f"{now:%Y/%m/%d %H:%M:%S.}{now_mil:03}")

আউটপুট: 2000/01/30 15: 10: 15.001


এই প্রশ্নের সাথে কোন সম্পর্ক নেই এবং এই অ্যাকাউন্টটি এই পোস্টের পরে থেকে সক্রিয় ছিল না
নিকোলাস গ্রাভাইস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.