awkプログラムのコンテキスト上、必要な場合は、文字列は数に、数は文字列に変換されます。たとえば、式foo + barにおいてfooかbarのいずれかの値が文字列の場合、加算が行われる前に数に変換されます。文字列の連結において数値が現れた場合、数値は文字列に変換されます。次の例を見てください。
two = 2; three = 3 print (two three) + 4
これは結果的に値(数値)27を表示します。変数twoとthreeの数値は文字列に変換され、連結されます。そしてその結果生じる文字列は数23に再び変換され、次に4が加えられます。
ある理由により、数値を文字列に変換する必要がある場合は、その数値にヌル文字列を連結してください。文字列を数値に変換する場合は、その文字列に0を加えてください。
文字列は、数として解釈することにより、数に変換されます。つまり、"2.5"は2.5に変換され、"1e3"は1000に変換されます。有効な数として解釈できない文字列は0に変換されます。
数値が文字列に変換される正確な方法は、awkの組み込み変数OFMTで制御されます(see section 組み込み変数 )。数は書式指定子としてOFMTを使う、特別な版sprintf関数(see section 組み込み関数)を使って変換されます。
OFMTのデフォルト値は"%.6g"で、これは値を少なくとも6桁の有効数字で表示します。アプリケーションによっては、`OFMT'の値を変更してさらに高い精度を指定したい場合があるでしょう。最近のほとんどのマシンでは、倍精度で10進数字16桁または17桁の精度が得られます。
sprintfに対して浮動小数点数の書式を適切に指定できない文字列をOFMTに設定した場合、おかしな結果になります。たとえば、書式中に`%'を忘れた場合、すべての数は同じ定数文字列に変換されます。