পাইথনে স্থির প্রস্থে কোনও ভাসমান সংখ্যার বিন্যাস কীভাবে করা যায়


322

নিম্নোক্ত প্রয়োজনীয়তা সহ আমি স্থির প্রস্থে কোনও ভাসমান সংখ্যাকে কীভাবে ফর্ম্যাট করব:

  1. শীর্ষস্থানীয় শূন্য যদি এন <1 হয়
  2. নির্দিষ্ট প্রস্থ পূরণ করতে ট্রেলিং দশমিক শূন্য (গুলি) যুক্ত করুন
  3. দশমিক সংখ্যার নির্দিষ্ট স্থির প্রস্থকে কেটে ফেলুন
  4. সমস্ত দশমিক পয়েন্ট সারিবদ্ধ করুন

উদাহরণ স্বরূপ:

% formatter something like '{:06}'
numbers = [23.23, 0.123334987, 1, 4.223, 9887.2]

for number in numbers:
    print formatter.format(number)

আউটপুট মত হবে

  23.2300
   0.1233
   1.0000
   4.2230
9887.2000

উত্তর:


500
for x in numbers:
    print "{:10.4f}".format(x)

কপি করে প্রিন্ট

   23.2300
    0.1233
    1.0000
    4.2230
 9887.2000

কোঁকড়া ধনুর্বন্ধনী এর ভিতরে বিন্যাস নির্দিষ্টকরণকারী পাইথন বিন্যাস স্ট্রিং সিনট্যাক্স অনুসরণ করে । বিশেষত, এই ক্ষেত্রে, এটি নিম্নলিখিত অংশগুলি নিয়ে গঠিত:

  • খালি স্ট্রিং কোলন মানে আগে "এর পাশে প্রদত্ত যুক্তির নিতে format()" - এই ক্ষেত্রে xশুধুমাত্র আর্গুমেন্ট হিসাবে।
  • 10.4fকোলন পরে অংশ বিন্যাস স্পেসিফিকেশন
  • f-এর মানে নির্দিষ্ট বিন্দু স্বরলিপি।
  • 10মাঠের মোট প্রস্থ হচ্ছে মুদ্রিত, শূণ্যস্থান দ্বারা lefted-padded হয়।
  • 4দশমিক বিন্দু পরে ডিজিটের সংখ্যা।

12
সুতরাং আমি বুঝতে পারি যে 4f দশমিকগুলি 4 এর মধ্যে সীমাবদ্ধ করে রাখছে (পিছনে জিরো সহ) তবে 10 এর অর্থ কী? এর অর্থ কি এই বিন্যাসটি 9999999999 (দশ 9 এর) বেশি সংখ্যক পূর্ণসংখ্যার সাথে কাজ করবে না? উৎসুক.
hobbes3

55
10.4মানে 10 টি অক্ষরের প্রস্থ এবং 4 দশমিক স্থানের নির্ভুলতা।
এমআরএবি

13
@ hobes3: 10হল সর্বনিম্ন ক্ষেত্রের প্রস্থ, অর্থাৎ মুদ্রিত স্ট্রিংয়ের সর্বনিম্ন দৈর্ঘ্য। নম্বরগুলি ডিফল্টরূপে ডান-প্রান্তিক হয় এবং ফাঁকা স্থান দিয়ে প্যাড করা হয় - আরও তথ্যের জন্য ডকুমেন্টেশন দেখুন।
সোভেন মারনাচ

9
("%0.4f" % x).rjust(10)
পাইথনগুলির

22
@ স্টিভেন রাম্বালস্কি: বা সহজভাবে "%10.4f" % x। পাইথন ২.6 এ আপনিও ব্যবহার করতে পারেন "{0:10.4f}".format(x)
সোভেন মারনাচ

88

এর উত্তর পাওয়া কয়েক বছর হয়ে গেছে তবে পাইথন ৩. 3. ( পিইপি 498 ) হিসাবে আপনি নতুনটি ব্যবহার করতে পারেন f-strings:

numbers = [23.23, 0.123334987, 1, 4.223, 9887.2]

for number in numbers:
    print(f'{number:9.4f}')

ছাপে:

  23.2300
   0.1233
   1.0000
   4.2230
9887.2000

2
দ্রষ্টব্য যে প্রস্থ এছাড়াও বিন্দু অক্ষর অন্তর্ভুক্ত। সুতরাং আপনি 9 টি প্রস্থ হতে নির্দিষ্ট করে, 1 বিন্দু মুদ্রণের জন্য ব্যবহার করা হবে, অন্য 8 টি অঙ্ক এবং ফাঁকা মুদ্রণের জন্য ব্যবহৃত হবে।
অফ 99555

37

পাইথন 3 এ নিম্নলিখিত কাজগুলি করেছেন:

>>> v=10.4
>>> print('% 6.2f' % v)
  10.40
>>> print('% 12.1f' % v)
        10.4
>>> print('%012.1f' % v)
0000000010.4

এটি গত 4 বছরে পরিবর্তিত হয়েছে, এখন %ফর্ম্যাটিং হ'ল ফর্ম্যাট করার প্রাচীনতম পদ্ধতি। বেশ কয়েকটি কারণে ব্যবহার করা str.formatবা f-stringsতার চেয়ে বেশি পছন্দ করা হয় %। আগে যখন এটি শুধুমাত্র ছিল str.format, লোকদের কিছু কারণ ছিল তবে f-stringsসেই গর্তটি ঠিক করেছিল। মিনি-ভাষার ডক্স বিন্যাস করুন , দস্তাবেজগুলিতে দস্তাবেজগুলি থেকে স্ট্রিংফর্ম্যাট উদাহরণ এবং -এফ-স্ট্রিং
nNMonkey


6

আপনি জিরো দিয়ে প্যাড বামও করতে পারেন। উদাহরণস্বরূপ, আপনি যদি number9 টি অক্ষরের দৈর্ঘ্য পেতে চান তবে বাম প্যাডে শূন্য ব্যবহার করুন:

print('{:09.3f}'.format(number))

সুতরাং, যদি number = 4.656, আউটপুট হয়:00004.656

আপনার উদাহরণের জন্য আউটপুট এইরকম দেখাবে:

numbers  = [23.2300, 0.1233, 1.0000, 4.2230, 9887.2000]
for x in numbers: 
    print('{:010.4f}'.format(x))

কপি করে প্রিন্ট:

00023.2300
00000.1233
00001.0000
00004.2230
09887.2000

আপনি যখন সঠিকভাবে বর্ণানুক্রমিক ক্রমে ফাইলের নাম তালিকাভুক্ত করতে চান তখন এটি কার্যকর হতে পারে এমন একটি উদাহরণ। আমি কয়েকটি লিনাক্স সিস্টেমে লক্ষ্য করেছি, সংখ্যাটি হ'ল: 1,10,11, .. 2,20,21, ...

সুতরাং আপনি যদি ফাইলের নামগুলিতে প্রয়োজনীয় সংখ্যার ক্রমটি প্রয়োগ করতে চান তবে আপনার যথাযথ শূন্যের সাথে বাম প্যাড প্রয়োজন।


2

পাইথন 3 এ।

GPA = 2.5
print(" %6.1f " % GPA)

6.1fবিন্দু পরে মানে 1 টি সংখ্যা দেন যদি বিন্দু আপনি শুধুমাত্র উচিত পর 2 টি সংখ্যা প্রিন্ট %6.2fযেমন যে %6.3f3 সংখ্যার বিন্দু পরে প্রিন্ট করা হবে।

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