কোন আদেশটি আমার জন্য পাই মুদ্রণ করতে পারে? আমি এটি উল্লেখ করতে চাই যে এটি কতগুলি সংখ্যা প্রিন্ট করে, আমি অনলাইনে কিছুই পাইনি। আমি কেবল পাই মুদ্রণ করতে সক্ষম হতে চাই।
কোন আদেশটি আমার জন্য পাই মুদ্রণ করতে পারে? আমি এটি উল্লেখ করতে চাই যে এটি কতগুলি সংখ্যা প্রিন্ট করে, আমি অনলাইনে কিছুই পাইনি। আমি কেবল পাই মুদ্রণ করতে সক্ষম হতে চাই।
উত্তর:
আপনি এই আদেশটি ব্যবহার করতে পারেন:
echo "scale=5; 4*a(1)" | bc -l
3.14159
যেখানে স্কেল হ'ল দশমিক বিন্দুর পরে অঙ্কের সংখ্যা।
তথ্যসূত্র: http://www.tux-planet.fr/calculer-le-chiffre-pi-en-ligne-de-commande-sous-linux/
bash
এবং অন্যান্য শাঁস এখানে স্ট্রিং সমর্থনকারী: bc -l <<< "scale=5; 4*a(1)"
।
scale=1000
পরিবর্তে দ্রুত 999 সঠিক সংখ্যা দেয় (শেষ সংখ্যাটি 1 দ্বারা বন্ধ, যুক্তিযুক্ত যেহেতু আমরা পাই / 4 গণনা করছি এবং তারপরে 4 দিয়ে গুণ করব)। scale=4000
কয়েক সেকেন্ডে 4000 সঠিক সংখ্যা দেয়। scale=10000
আমার ধৈর্য ধারণের চেয়ে বেশি সময় নেয় তবে সম্ভবত 9999 বা 10000 সঠিক সংখ্যা দেয়।
আপনি tex(1)
ইনস্টল করা থাকলে:
tex --version | head -1 | cut -f2 -d' '
cut
। দীর্ঘ সময় অপেক্ষা করে আবার কমান্ড চালিয়ে আরও অঙ্ক মুদ্রণ করা যায়।
নির্বিচারে নির্ভুলতার সাথে মুদ্রণের জন্য, আপনি bc
এবং সূত্রটি ব্যবহার করতে পারেন pi = 4*atan(1)
:
# bc -l
scale=<your precision>
4*a(1)
scale
, pi = 3.141592..
তবে echo "scale=5; 4*a(1)" | bc -l => 3.14156
আমি কি তবে এর সাথে দেখার আশা করব 3.14159
?
scale
গণনার জন্য ব্যবহারের যথার্থতা নির্দিষ্ট করে, সুতরাং scale=5
কোনও অপারেশন কোনও পারমাণবিক ক্রিয়াকলাপের জন্য পাঁচটি বেশি ভগ্নাংশের সংখ্যা ব্যবহার করবে না।
আপনি যদি এমন কিছু চান যা π এর মান গণনা করতে পারে তবে কয়েকটি পন্থা রয়েছে। সম্ভবত সবচেয়ে সুস্পষ্ট সমাধান হ'ল pi
(দেবিয়ান প্যাকেজ লিঙ্ক) এর মতো একটি তৈরি তৈরি প্যাকেজ ব্যবহার করা হবে , যা যদি দেবিয়ানের প্যাকেজের বিবরণটি বিশ্বাসযোগ্য হয় তবে এটি কেবলমাত্র স্মৃতি দ্বারা সীমাবদ্ধ একটি নির্বিচারে নির্ভুলতায় মান গণনা করতে পারে।
pi
আসলে এমন একটি উদাহরণ যা সিএলএন লাইব্রেরি সহ অন্তর্ভুক্ত রয়েছে (ক্লাস লাইব্রেরি ফর নাম্বার) । এটি উদাহরণস্বরূপ অ্যাপ্লিকেশনগুলিতে অন্তর্ভুক্ত রয়েছে যা পাই, ফিবোনাচি ইত্যাদির মতো নির্বিচারে দৈর্ঘ্যের সংখ্যা তৈরির জন্য সরঞ্জাম সরবরাহ করে থাকে। সিবিএন প্যাকেজগুলি ডেবিয়ান / উবুন্টুতে প্রাক-প্যাকেজযুক্ত পাওয়া যায় (এটি উপরে দেবিয়ান লিঙ্কটি নির্দেশ করছে)।
$ ./pi 10
3.141592653
$ ./pi 20
3.1415926535897932384
দ্রষ্টব্য: এই উদাহরণগুলির উত্সটি এখানে সিএনএন কোড বেসের উত্সে ।
ফেডোরায় আমাকে সোর্স টার্বল ডাউনলোড করতে হয়েছিল এবং এটি নিজেই তৈরি করতে হয়েছিল, তবে এটি সামান্য হৈচৈ করে তৈরি করে। যে কোনও কারণেই cln
ফেডোরার প্যাকেজটিতে কেবল গ্রন্থাগার অন্তর্ভুক্ত রয়েছে তবে ডেবিয়ান / উবুন্টু সংস্করণে (উপরে) যে উদাহরণগুলি পাওয়া যায় তা উপেক্ষা করে।
pi
শোনার মতো উত্সর্গীকৃত প্রোগ্রামটি আপনি যা খুঁজছেন ঠিক তেমনই। আপনি pi 300
উদাহরণস্বরূপ প্রথম 300 অঙ্ক মুদ্রণ করার মতো জিনিসগুলি করতে পারেন ।
এক মিলিয়ন অঙ্কের জন্য আপনি নিম্নলিখিতগুলি ব্যবহার করতে পারেন (3000 অঙ্কের জন্য এখানে):
curl --silent http://www.angio.net/pi/digits/pi1000000.txt | cut -c1-3000
cut
প্রস্থান বন্ধ হয়ে যায়? যদি এটি হয় তবে আমি সম্মতি জানাই, এটি ও (এন) হবে।
অন্যান্য উত্তরগুলির মধ্যে কিছু আউটপুটের শেষ স্থানে ভুল সংখ্যা দেখায়। নীচে ব্যবহার করে উত্তরেরbc
বিভিন্নতা রয়েছে তবে সঠিক গোলাকার ফলাফল রয়েছে। ভেরিয়েবলটিতে s
উল্লেখযোগ্য অঙ্কের সংখ্যা রয়েছে ( 3
দশমিক পয়েন্টের সামনে সহ )।
$ bc -l <<< "s=5; scale=s+2; pi=4*a(1)+5*10^(-s); scale=s-1; pi/1"
3.1416
$ bc -l <<< "s=5; scale=s+2; pi=4*a(1); scale=s-1; pi/1"
3.1415
গোলটি সরাসরি ভিতরে সঞ্চালিত হয় bc
। এতে কমান্ডের সীমাবদ্ধতা নেই printf
যা সংখ্যার জন্য সি ভাষা double
টাইপ উপস্থাপনা ব্যবহার করে যার প্রায় 17 টি উল্লেখযোগ্য সংখ্যার যথার্থতা রয়েছে। গোলটি সহ উত্তরটিprintf
দেখুন ।
scale=s-1
কাটাতে অঙ্কের সংখ্যা নির্ধারণ করে। pi/1
ছাঁটাই প্রয়োগ করতে ফলাফলকে 1 দ্বারা ভাগ করে। সরল pi
সংখ্যাটি ছাঁটাই করে না।
অর্ধেকটি গোল করে প্রথম অঙ্কে 5 যোগ করা দরকার যা কেটে যাবে (5 × 10) s ) যাতে অঙ্কের ক্ষেত্রে 5 এর সমান 5 এর বেশি হলে শেষ অঙ্কটি বৃদ্ধি পাবে।
Hobbs দ্বারা পরীক্ষা থেকে মনে হয় যে আরও তিনটি অতিরিক্ত সংখ্যা যা বৃত্তাকার / কাটা হবে ( scale=s+2
) খুব দীর্ঘ সংখ্যার জন্যও যথেষ্ট।
উপরের উদাহরণগুলি এখানে স্ট্রিংগুলি ব্যবহার করে যা উদাহরণস্বরূপ bash
, ksh
এবং এ সমর্থিত zsh
। যদি আপনার শেলটি এখানে স্ট্রিং ব্যবহার echo
এবং পাইপ সমর্থন করে না :
$ echo "s=5; scale=s+2; pi=4*a(1); scale=s-1; pi/1" | bc -l
3.1415
পাইথন 2 সহ:
$ python -c "import math; print(str(math.pi)[:7])"
3.14159
(..)
পাইথন 2 এবং 3 এ এটির সাথে কাজ করে কেবল 12 টি সংখ্যা রয়েছে বলে মনে হয়।
python -c "import gmpy2; print(str(gmpy2.const_pi(8192))[:400])"
। আরও সংখ্যার জন্য নির্ভুলতা বাড়ান ... যেমনpython -c "import gmpy2; print(str(gmpy2.const_pi(16384))[:4400])"
from mpmath import mp; mp.dps = 1000000 ; print(mp.pi)
মিলিয়ন ডিজিটের জন্য আমি সবচেয়ে দ্রুত সেকেন্ড কয়েক সেকেন্ড খুঁজে পেতে পারি । মোটেও খারাপ নয় !!!
ব্যাশে:
$ read -a a <<< $(grep M_PIl /usr/include/math.h) ; echo ${a[3]} | tr -d L
3.141592653589793238462643383279502884
afmtodit
প্রয়োজন groff
ইনস্টল করার জন্য। উবুন্টু (এবং স্বাদে) এ এটি মানক নয় । JFYI।
বিল্ট ইন পাই () ফাংশনটি ব্যবহার করে পিএইচপিতে খুব সহজ:
<?php
echo round(pi(), 2);
?>
এই প্রশ্নটি আমি কীভাবে মিস করেছি ...
আমার স্টাইল ওভারফ্লোতে কয়েক সপ্তাহ আগে পোস্ট করা আমার একটি পাইথন পাই প্রোগ্রামটি এখানে । এটি বিশেষত দ্রুত নয়, তবে এটি প্রচুর অঙ্ক করতে পারে । :) তবে, যেহেতু আমি সেই থ্রেডে উল্লেখ করেছি, আমি সাধারণত পাইথনের এমপিএমথ মডিউলটি স্বেচ্ছাচারিত নির্ভুল গাণিতিক জন্য ব্যবহার করি এবং এমপিএমথের পরিবর্তে দ্রুত পাই প্রস্তুতকারক রয়েছে।
যেমন,
time python -c "from mpmath import mp;mp.dps=500000;print mp.pi" >bigpi
real 0m4.709s
user 0m4.556s
sys 0m0.084s
5 সেকেন্ডের নীচে 500000 ডেসিমাল পাই খুব জঞ্জাল নয়, আইএমএইচও, এটি বিবেচনা করে কোনও একক কোর 2GHz প্রসেসর, 2 গিগা র্যাম এবং একটি প্রবীণ আইডিই ড্রাইভে লেখার জন্য কোনও মেশিনে চলছে।
from mpmath import mp; mp.dps = 1000000 ; print(mp.pi)
মিলিয়ন অঙ্কের জন্য দুই সেকেন্ডের নীচে (পিপ 3 ইনস্টল এমপিএমথের পরে) চেষ্টা করুন । মোটেও খারাপ নয় !!!
আপনি যদি node.js
ইনস্টল করে থাকেন তবে এটি আপনার জন্য পাই অনুসন্ধানে সেরা চেষ্টা করবে, যদিও এটির সেরাটি খুব ভাল নয়:
node -e 'for(a=0,b=4E8,m=Math,r=m.random;b--;)a+=(1>m.sqrt((c=r())*c+(d=r())*d));console.log(a/1E8)'
নমুনা আউটপুট:
3.14157749
3.1416426
3.14159055
3.14171554
3.14176165
3.14157587
3.14161137
3.14167685
3.14172371
node -e 'console.log(Math.PI)'
তার সেরা থেকে কিছুটা ভাল।
echo pie
?
মন্টি কার্লো পদ্ধতি
উদাহরণস্বরূপ দেখুন, এই এই পদ্ধতি একটি ব্যাখ্যা জন্য।
আদেশ সহকারে
সুবিধাদি
মজা :-)
perl -Mbignum -E '
for(0 .. 1_000_000){
srand;
$x=rand; # Random x coordinate
$y=rand; # Random Y coordinate
$decision = $x**2 + $y**2 <=1 ? 1:0; # Is this point inside the unit circle?
$circle += $decision;
$not_circle += 1-$decision;
$pi = 4*($circle/($circle+$not_circle));
say $pi
}'
দ্রষ্টব্য: আমি প্রথমে এটি ব্যতীত চেষ্টা করেছি srand
তবে এটি আটকে গেল 3.14
এবং এর পরে অঙ্কগুলি দু'দিক থেকে যায়, কখনও রূপান্তরিত হয় না। এটি সম্ভবত কারণ, কিছুক্ষণ পরে পিআরএনজি নিজেই পুনরাবৃত্তি শুরু করে। এর ব্যবহার srand
তা এড়াতে বা কমপক্ষে সিউডো-এলোমেলো ক্রমের সময়কাল দীর্ঘায়িত করবে। এটি সব অনুমান, সুতরাং আমি ভুল হলে আমাকে সংশোধন করতে দ্বিধা বোধ করবেন।
bignum
পার্লের ক্রিয়াকলাপগুলির সাথে আমি সত্যিই পারদর্শী নই, আমি ভয় পাচ্ছি এবং উপরের প্রোগ্রামটির কোনও বিশেষ অংশের জন্য আমি জানি না যার জন্য আরও নতুন পার্লের প্রয়োজন। যাইহোক, এ সম্পর্কে আকর্ষণীয়টি হ'ল নিজেই অ্যালগরিদম। যদি এই পার্ল আপনার পক্ষে কাজ না করে তবে আপনার পছন্দের ভাষায় এটি প্রয়োগের চেষ্টা করুন।
($x,$y,$circle,$not_circle)=(0,0,0);
সমস্ত ভেরিয়েবলগুলি ব্যবহারের আগে সংজ্ঞায়িত করা হয়েছে তা নিশ্চিত করতে আপনি লুপের আগে যোগ করার চেষ্টা করতে পারেন।
(0,0,0,0)
।
($x,$y,$circle,$not_circle)=(0,0,0,0)
। এক বা দুই মিনিট পরে এটি পছন্দসই মানের চারদিকে ঝুলছে তখন আমি থামার আগে এটি 3.1409 এর অনেক কাছাকাছি চলে গেছে। আকর্ষণীয় এবং মজাদার! ধন্যবাদ!
আপনি পাই এর জন্য একটি স্পিগট অ্যালগরিদম ব্যবহার করতে পারেন। ডিক শীতকালীন এবং আচিম ফ্লেমেনক্যাম্পের নীচের সি প্রোগ্রামটি একবারে পাই এর প্রথম 15,000 অঙ্কের উত্পাদ করবে।
a[52514],b,c=52514,d,e,f=1e4,g,h;main(){for(;b=c-=14;h=printf("%04d",e+d/f))for(e=d%=f;g=--b*2;d/=g)d=d*b+f*(h?a[b]:f/5),a[b]=d%--g;}
পিএইচপি
কয়েকটি উদাহরণ:
php -r "print pi();"
php -r 'echo M_PI;'
echo "<?=pi();" | php
আপনি যদি নির্ভুলতা পরিবর্তন করতে চান তবে চেষ্টা করুন:
php -d precision=100 -r 'echo pi();'
প্রায় 14 দশমিক সংখ্যার যথার্থতা সহ সর্বাধিক 8 1.8e308 সহ একটি ফ্লোটের আকার প্ল্যাটফর্ম নির্ভর a তবে সাধারণ মান (bit৪ বিট আইইইই ফর্ম্যাট)। [আরও পড়ুন]
আপনি যদি আরও সঠিক নির্ভুলতার সন্ধান করেন তবে কিছু প্রোগ্রামিং সমাধানের জন্য রোসটা কোড বা কোড গল্ফ এসই চেক করুন ।
সম্পর্কিত: এসআরএসইতে কমপক্ষে এক হাজার অঙ্কে পিআই গণনা করতে পারে এমন সফ্টওয়্যার
এখানে একটি স্ক্রিপ্ট রয়েছে যা ব্যবহারকারী দ্বারা নির্দিষ্ট করা সংখ্যার সংখ্যার ('সহ') সহ পাই মুদ্রণ করে।
pi.sh
#!/bin/bash
len=${1:-7}
echo "4*a(1)" | bc -l | cut -c 1-"$len"
আউটপুট
$ ./pi.sh 10
3.14159265
এবং ডিফল্ট মান সহ:
$ ./pi.sh
3.14159
আমি লোককে বিকল্প scale
হিসাবে ব্যবহার করতে দেখেছি bc
, তবে আমার ক্ষেত্রে ( bc 1.06.95
) এটি সঠিক মান আউটপুট দেয় না:
$ echo "scale=5;4*a(1)" | bc -l
3.14156
শেষ সংখ্যাটি লক্ষ্য করুন।
./pi.sh 10
প্রিন্ট নয়টি অঙ্ক, প্রাথমিক গণনা 3
। এছাড়াও, আপনি রাউন্ডিং ত্রুটির আঙুলটি দেখিয়ে দিচ্ছেন, তবে আপনার ./pi.sh 6
আউটপুটগুলি 3.1415
যা সর্বোত্তম নাও হতে পারে।
scale=X
বিকল্পটি bc
সংখ্যাটি গোল করবে না, তবে কেবল এক্স-তম দশমিক অঙ্কে সংখ্যাটি কেটে দেবে।
আমি অ্যাবের উত্তর পছন্দ করি কিন্তু বিসি শেষ সংখ্যাটি কীভাবে পরিবর্তন করছিল তা পছন্দ করি না।
echo "scale=5; 4*a(1)" | bc -l
3.14156
সুতরাং আমি অঙ্কের সংখ্যা নির্ধারণ করতে স্কেল ব্যবহৃত মুদ্রণযোগ্য মুছে ফেললাম।
printf "%0.5f\n" $(echo "4*a(1)" | bc -l)
3.14159
printf
তুলনায় ভাসমান পয়েন্ট সংখ্যাগুলির উপর একটি গুরুতর সীমাবদ্ধতা রয়েছে bc
। এগুলি সি ভাষার double
ধরণের দ্বারা প্রায় 17 ডিজিটের যথার্থতার সাথে প্রতিনিধিত্ব করে তাই 17 -এর পরে অ-শূন্য সংখ্যাও বোগাস! ------ ফলাফল সীমাবদ্ধ না করে সঠিক গোল করেprintf
আমি একটি উত্তর যুক্ত করেছি । ------ এছাড়াও এই কমান্ডটি বিভিন্ন লোকেলের সাথে কাজ করে তা নিশ্চিত করার জন্য আপনাকে অবশ্যই এই জাতীয় কিছু করতে হবে: LC_ALL=C printf
...
আপনার জীবনের জন্য যদি এই arctan
জিনিসটি মনে না থাকে তবে কী করবেন ? অথবা ধরুন আপনি জানেন না যে এই ফাংশনটি বিদ্যমান রয়েছে bc
, তবে এই সাধারণ বিভাগটি মুখস্থ করার চেষ্টা করুন:
echo "scale=6; 355 / 113" | bc
3.141592
শুধুমাত্র 6 ডিজিটের জন্য কাজ করবে তবে বৈজ্ঞানিক গণনার জন্য এটি ঠিক করবে।
আপনি যদি ভাবেন যে আপনি এই দুটি সংখ্যাও মনে রাখতে না পারেন, প্রথমে ডোনমিনেটরটি লিখুন, তারপরে অঙ্কটি লিখুন:
113 355
বা কেন হবে না
11 33 55
"ডাবল 1, ডাবল 3, ডাবল 5"। সমস্ত পরিসংখ্যান বিজোড়। গণনা করতে, 6-অঙ্কের নম্বরটি আবার অর্ধেকে বিভক্ত করুন, এবং বিভাজক আগে ডিনোমিনেটর এবং অঙ্কগুলি অদলবদল করুন। এটা সম্বন্ধে.
4 * arctan(1)
যে 2 তিন-সংখ্যা সংখ্যার মনে রাখা অনেক সহজ ... আমি সহজে 335 পরিবর্তে 355, বা 133 পরিবর্তে 113. এর ব্যবহার করতে চাই
এটি ধরে নেওয়া যেতে পারে যে ওপি মুদ্রণ করতে শেল কমান্ডটি একটি স্বল্প, সহজ মুখস্ত করতে আগ্রহী - তবে প্রশ্নটি সত্যই তা বলে না। এই উত্তরটি সেই অনুমানটিকে উপেক্ষা করছে এবং লিখিত হিসাবে কঠোরভাবে প্রশ্নের উত্তর দিয়েছে;
ইতিমধ্যে 18 টি উত্তর থাকলেও একটি পন্থা এখনও নিখোঁজ রয়েছে - এবং এতগুলি উত্তর দিয়ে, এটি ভাবতে পারে যে এটি
কেবল অনুপস্থিত: তুচ্ছ একটি: কীভাবে মুদ্রণ করবেন? শুধু ছাপুন π!
এমনকি এটি সম্পর্কে চিন্তা করাও এই পদ্ধতির পক্ষে খুব অকেজো বলে মনে হচ্ছে, তবে আমি এটি দেখাব যে এটির যোগ্যতা রয়েছে:
আমরা সাধারণত π এর মান গণনা করতাম π সমাধানটিকে অনুকূলকরণ থেকে, মানকে প্রাক্কলিত করে রাখার বিষয়টি আমি দেখতে পাচ্ছি না - এটি একটি ধ্রুবক, কোনও সংকলক এটি করবে।
আমরা সর্বাধিক নির্ভুলতা অবধি π এর কয়েকটি সংখ্যা চাই want সুতরাং আমরা কেবল ধ্রুবকের উপসর্গটি পাঠ্য হিসাবে নিতে পারি:
echo 3.1415926535897932384626433832795 | cut -b -7
3.14159
নির্ভুলতার জন্য একটি সুস্পষ্ট যুক্তি সহ একটি বৈকল্পিক, উদাহরণস্বরূপ। নির্ভুলতার জন্য 5
:
echo 3.1415926535897932384626433832795 | cut -b -$((2+5))
3.14159
সর্বাধিক নির্ভুলতা অন্য যে কোনও একটি উত্তর ব্যবহার করে উপযুক্ত ধ্রুবক গণনা করে নির্বিচারে বেছে নেওয়া যেতে পারে। এটি কেবলমাত্র একটি কমান্ড লাইনের সর্বোচ্চ দৈর্ঘ্য দ্বারা সীমাবদ্ধ।
মানটি সন্ধানের জন্য এটিতে স্থির সময় জটিলতা রয়েছে।
এটি বাস্তবায়নের নিম্ন জটিলতার ভিত্তিতে সমস্ত সীমাবদ্ধতা এবং প্রতিবন্ধকতাগুলি সুস্পষ্ট করে তোলে।
এটি সম্পূর্ণ উপলব্ধ নির্ভুলতার (কোনও পেছন ছাড়াই 0
) ধ্রুবকটি ফিরিয়ে দিয়ে সর্বাধিকের চেয়ে বৃহত্তর নির্ভুলতা পরিচালনা করে ।
সুতরাং এই সমাধানটি তুচ্ছ অবস্থায়, এর সুবিধাগুলি রয়েছে। উদাহরণস্বরূপ, এটি শেল ফাংশনে ব্যবহৃত হলে এটি কার্যকর হতে পারে।
উপরের দ্রবণটির কার্যকারিতাও কোনও প্রক্রিয়া তৈরি না করেই অন্তর্ভুক্ত করা যেতে পারে cut
(ধরে echo
নেওয়া শেল বিল্টিন)। এটি printf
কিছুটা
অস্পষ্টভাবে কমান্ডটি (সাধারণত একটি বিল্টিন) ব্যবহার করে : ধ্রুবকটি স্ট্রিং হিসাবে সম্পূর্ণরূপে হ্যান্ডেল করা হয় (বিন্যাসটি ব্যবহার করে %s
), কোনও ভাসমান বিন্দু জড়িত নেই, সুতরাং এখানে সীমাবদ্ধতা প্রয়োগ হয় না float
বা double
প্রয়োগ হয় না। পালানোর
যথার্থ মান %s
( 5
নীচের উদাহরণে) মুদ্রণের জন্য স্ট্রিং উপসর্গের দৈর্ঘ্য নির্দিষ্ট করে - যা নির্ভুলতা। 3.
অংশ printf
এটা স্পষ্টতা গণনার বার করার জন্য বিন্যাস।
$ printf "3.%.5s\n" 1415926535897932384626433832795
3.14159
পৃথক যুক্তি হিসাবে নির্ভুলতার সাথে বিকল্প:
$ printf "3.%.*s\n" 5 1415926535897932384626433832795
3.14159
অথবা কিছুটা বেশি পঠনযোগ্য (এর মধ্যে স্পেসটি নোট করুন 3.
এবং 14159...
এগুলি পৃথক যুক্তিযুক্ত):
$ printf "%s%.5s\n" 3. 1415926535897932384626433832795
3.14159
ব্যবহারের বৈকল্পিকটি printf
খুব দ্রুত হতে পারে বলে প্রত্যাশা করা যেতে পারে: কারণ printf
সাধারণ শেলগুলির মতো শেল বিল্ট ইন bash
এবং zsh
এটি কোনও প্রক্রিয়া তৈরি করে না।
এছাড়াও, এটি কোনও ধরণের ভাসমান পয়েন্ট সম্পর্কিত কোডকে স্পর্শ করে না, তবে কেবলমাত্র বাইট অ্যারেগুলির ম্যানিপুলেশন (স্পষ্টভাবে মাল্টিবাইট অক্ষর নয়)। এটি সাধারণত দ্রুত হয়, প্রায়শই ভাসমান পয়েন্ট ব্যবহারের চেয়ে অনেক দ্রুত faster
প্রায়শই, সেখানে কারণে প্রতিস্থাপন করতে হয় printf
দ্বারা /usr/bin/printf
গ্যারান্টি দৃঢ়তা বা সামঞ্জস্য করতে। এই ক্ষেত্রে, আমি মনে করি আমরা বিল্টিনটি ব্যবহার করতে পারি - যা গুরুত্বপূর্ণ, কারণ /usr/bin/printf
কোনও প্রক্রিয়া জোর করে "দ্রুত" সুবিধা হ্রাস করে। সামঞ্জস্যের
সাথে একটি সাধারণ সমস্যা printf
হল লোকেলের উপর নির্ভর করে সংখ্যা আউটপুট ফর্ম্যাট। লোকাল সেটিং এর উপর ভিত্তি করে .
সংখ্যার জন্য পৃথককরণ পরিবর্তন করা যেতে পারে ,
; তবে আমরা সংখ্যা ব্যবহার করি না, কেবল একটি স্ট্রিং ধ্রুবক রয়েছে যা আক্ষরিক থাকে .
- লোকেল দ্বারা প্রভাবিত হয় না।
স্টাফেনচাজেলাস তা উল্লেখ করেছেনprintf %.5s
ভিন্নভাবে কাজ করেzsh
অক্ষর গণনা করে, যথারীতি বাইট নয়। ভাগ্যক্রমে, আমাদের ধ্রুবকগুলি নিম্ন এএসসিআইআই-রেঞ্জের কেবলমাত্র অক্ষর ব্যবহার করে, যা UTF-8
ইউনিকোডের জন্য সাধারণ এনকোডিং ব্যবহার না করে আমরা কোনও নির্দিষ্ট প্রস্থের এনকোডিং না করে যতক্ষণ না কোনও প্রাসঙ্গিক এনকোডিংয়ে অক্ষর অনুসারে এক বাইট দ্বারা এনকোড থাকে ।
printf %.5s
zsh ভিত্তিতে গৃহস্থালি (বাইট নয়) (বুদ্ধিমানভাবে, তবে পসিক্সের বিপরীতে)। ksh93
এর %.5Ls
গ্রাফেম ভিত্তিক।