जवाबों:
आप यह कोशिश कर सकते हैं:
$ 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
ब्लॉक में हैं, तो यह नहीं है। मैंने पहले सामान्य शरीर में अभिव्यक्ति के साथ परीक्षण किया, इस प्रकार मैया पुलपा। धन्यवाद, @Gnouc
Awk नीचे स्प्रिंटफ का उपयोग करता है और यह निष्पक्ष राउंडिंग करता है, इसलिए आपके प्लेटफ़ॉर्म के आधार पर यदि आप इसे हमेशा के लिए चाहते हैं तो आपको कुछ इस तरह से उपयोग करने की आवश्यकता हो सकती है:
awk "BEGIN { x+=(5/2); printf('%.0f', (x == int(x)) ? x : int(x)+1) }"
इसे साकार नहीं करने से सूक्ष्म लेकिन गंदा कीड़े हो सकते हैं।
/dev/null
आवश्यक?