書式: format(, 書式付き出力)
mcalでは数値を内部的には浮動小数点として管理している。 それをC言語のprintf関数で利用できる出力書式を指定する事で,数値の出力形式を変更する事ができる。 利用できる書式は以下の3つである。
%f: 小数形式表記
%e,%E: 指数形式表記(大文字%Eで指数記号を大文字表記)
%g,%G: f,eの自動判断(大文字%Gで指数記号を大文字表記)
例えば、小数形式表記の0.00726は、指数形式表記では7.260000e-03となり、 1265は、1.265000e+03となる。
さらに、%の直後に数字もしくはプラス記号を指定することで、表示桁数と符号表記を制御できる。 数字は「全体の幅.小数点の幅」によって指定する。 例えば、123.456789は、%5.2fの書式によって123.46に、 %8.3fの書式によって123.457となる。
プラス符号を常に表記したければ数字の前にプラス記号を付加すればよい。 例えば、123.456789は、%+5.2fの書式によって+123.46となる。
書式の中には上記で説明した記号以外にも、任意の文字列を含めることが可能である。 例えば、250は、書式"合計%g円"によって、"合計250円"となる。 %という文字を表示したければ"%%"と記すれば良い。15は、書式"%g%%"によって、15%となる。
valを実数として小数点以下2桁に変換する。
$ more dat1.csv id,val 1,0.00726 2,123.456789 3, 4,-0.335 $ mcal c='format(${val},"%8.3f")' a=rsl i=dat1.csv o=rsl1.csv #END# kgcal a=rsl c=format(${val},"%8.3f") i=dat1.csv o=rsl1.csv $ more rsl1.csv id,val,rsl 1,0.00726, 0.007 2,123.456789, 123.457 3,, 4,-0.335, -0.335
valを指数表現で出力。
$ mcal c='format(${val},"%e")' a=rsl i=dat1.csv o=rsl2.csv #END# kgcal a=rsl c=format(${val},"%e") i=dat1.csv o=rsl2.csv $ more rsl2.csv id,val,rsl 1,0.00726,7.260000e-03 2,123.456789,1.234568e+02 3,, 4,-0.335,-3.350000e-01