| 記事内容:[|]
> 確かAWKは直接は正数しか扱えないのでは?(RubyとHSPだけかな?)
基本的には、AWKでは全て文字として扱われます 例えば a=10 と有れば、a の内容は『10』と言う文字です、従って a=10;b=3 の場合 a < b が成り立ちます(1文字目の文字コードで比較される為)
この文字変数を数値演算 or 数値関数の因数にした場合、文字の内容を数値に変換 して処理されます、またその結果を変数に代入すると、倍精度数値変数として扱わ れます
上の続きで c=a+b ならば、aとbは『10』と『3』という文字、cは『13』という数値 です
そして、数値変数を文字として扱うと、勝手に文字列に変換されて処理されます この時、awkのバージョンで差が有りますが、標準で6桁程度の文字になります
print 文で数値変数を出力する場合も同様に文字に変換されてから出力されます (この為、短精度しか扱えないと勘違いしやすいかも)
例えば d=1/3 の場合 dは『0.3333333333333333』位の桁数の数値変数ですが、 print d とすると『0.33333』程度の桁数で出力されます この変換書式は環境変数 OFMT によって指定されています (print 文の場合、それ以外の変換はawkのバージョンによって違う)
従って、短精度の数値しか扱えないと、勘違いされるかも知れませんが、 整数しか扱えないということは決して有りません
|