প্রস্থে ছত্রাক মুদ্রণ নম্বরটি এবং এটির চারপাশে round


20

আমার একটি নম্বর মুদ্রণ করা দরকার , তবে প্রদত্ত প্রস্থ এবং বৃত্তাকার (বিশ্রী সহ!)

%10s

আমার কাছে এটি আছে এবং কোনওভাবেই আমি সংযোগ স্থাপন করতে হবে %dতবে আমি যা করি তা সবগুলি খুব ভাল প্যারামিটারের সাথে শেষ হয় (কারণ আমার আরও কলাম রয়েছে)।

উত্তর:


27

আপনি এটি চেষ্টা করতে পারেন:

$ awk 'BEGIN{printf "%3.0f\n", 3.6}'
  4

আমাদের ফর্ম্যাট বিকল্পের দুটি অংশ রয়েছে:

  • 3: অর্থ আউটপুট 3 টি অক্ষর প্যাড করা হবে।
  • .0f: অর্থ আউটপুটটির কোনও নির্ভুলতা থাকবে না, যার অর্থ বৃত্তাকার হবে।

থেকে man awk, আপনি আরও বিশদ দেখতে পারেন:

width   The field should be padded to this width. The field is normally padded
        with spaces. If the 0  flag  has  been  used, it is padded with zeroes.

.prec   A number that specifies the precision to use when printing.  For the %e,
        %E, %f and %F, formats, this specifies the number of digits you want
        printed to the right of the decimal point. For the %g, and %G formats,
        it specifies the maximum number of significant  digits. For the %d, %o,
        %i, %u, %x, and %X formats, it specifies the minimum number of digits to
        print. For %s, it specifies the maximum number of characters from the
        string that should be printed.

9

%fফর্ম্যাট স্পেসিফায়ার ব্যবহার করে , আপনার (ভাসমান পয়েন্ট) নম্বরটি নির্দিষ্ট করার সাথে সাথে স্বয়ংক্রিয়ভাবে গোল হয়ে যাবে। উদাহরণস্বরূপ, পুরো সংখ্যার মানকে গোল করতে

$ awk 'BEGIN { printf("%.0f\n", 1.49); }'
1
$ awk 'BEGIN { printf("%.0f\n", 1.5); }'
2

আপনি যদি আরও পিছনের অঙ্কগুলি চান তবে কেবল নির্ভুলতা পরিবর্তন করুন।


হয় /dev/nullপ্রয়োজনীয়?
অবিনাশ রাজ

আপনার একমাত্র বিবৃতি যদি BEGINব্লকে থাকে তবে তা নয়। আমি প্রথমে স্বাভাবিক শরীরে এক্সপ্রেশনটি দিয়ে পরীক্ষা করেছিলাম, এভাবে মায়া কুলপা। ধন্যবাদ, @ জ্ঞাক
Andreas Wiese

3

আওক নীচে স্প্রিন্টফ ব্যবহার করে এবং এটি পক্ষপাতদুষ্ট রাউন্ডিং করে, সুতরাং আপনার প্ল্যাটফর্মের উপর নির্ভর করে যদি আপনি এটি সর্বদা চলাফেরা করতে চান তবে আপনাকে এই জাতীয় কিছু ব্যবহার করতে হবে:

awk "BEGIN { x+=(5/2); printf('%.0f', (x == int(x)) ? x : int(x)+1) }"

এটি উপলব্ধি না করে সূক্ষ্ম তবে বাজে বাগের দিকে নিয়ে যেতে পারে।

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