JWW専用掲示板
(現在 過去ログ26 を表示中)

HOME HELP 新規作成 新着記事 トピック表示 発言ランク ファイル一覧 検索 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■5992 / inTopicNo.21)  数値変数は倍精度で内部処理されます
  
□投稿者/ awkに付いて 一般人(1回)-(2003/01/05(Sun) 15:22:30)

    記事内容:[|] 

    > 確か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のバージョンによって違う)

    従って、短精度の数値しか扱えないと、勘違いされるかも知れませんが、
    整数しか扱えないということは決して有りません

引用返信/返信 [メール受信/OFF] 削除キー/

<前の20件

トピック内ページ移動 / << 0 | 1 >>

このトピックに書きこむ

過去ログには書き込み不可

Mode/  Pass/

HOME HELP 新規作成 新着記事 トピック表示 発言ランク ファイル一覧 検索 過去ログ

- Child Tree -