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


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.