উত্তর:
আপনি এটি চেষ্টা করতে পারেন:
$ 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.
%f
ফর্ম্যাট স্পেসিফায়ার ব্যবহার করে , আপনার (ভাসমান পয়েন্ট) নম্বরটি নির্দিষ্ট করার সাথে সাথে স্বয়ংক্রিয়ভাবে গোল হয়ে যাবে। উদাহরণস্বরূপ, পুরো সংখ্যার মানকে গোল করতে
$ awk 'BEGIN { printf("%.0f\n", 1.49); }'
1
$ awk 'BEGIN { printf("%.0f\n", 1.5); }'
2
আপনি যদি আরও পিছনের অঙ্কগুলি চান তবে কেবল নির্ভুলতা পরিবর্তন করুন।
BEGIN
ব্লকে থাকে তবে তা নয়। আমি প্রথমে স্বাভাবিক শরীরে এক্সপ্রেশনটি দিয়ে পরীক্ষা করেছিলাম, এভাবে মায়া কুলপা। ধন্যবাদ, @ জ্ঞাক
আওক নীচে স্প্রিন্টফ ব্যবহার করে এবং এটি পক্ষপাতদুষ্ট রাউন্ডিং করে, সুতরাং আপনার প্ল্যাটফর্মের উপর নির্ভর করে যদি আপনি এটি সর্বদা চলাফেরা করতে চান তবে আপনাকে এই জাতীয় কিছু ব্যবহার করতে হবে:
awk "BEGIN { x+=(5/2); printf('%.0f', (x == int(x)) ? x : int(x)+1) }"
এটি উপলব্ধি না করে সূক্ষ্ম তবে বাজে বাগের দিকে নিয়ে যেতে পারে।
/dev/null
প্রয়োজনীয়?