現在位置
Top->i02表示リスト機能では、等号の後に計算式を書くことができます。計算式は数値計算と日付計算から できていますが、ここでは数値計算を説明します。数値計算には次のような要素が使えます。
ここで単項マイナスとは =-a のような式の場合の符号を反転させるためのマイナスのことです。 また、max,minのみは任意個数の引数をとります。たとえばmax(a,b,c)とかmin(d,e,f,g)のように 使うことができます。
数学関数はANSI Cのライブラリ関数に丸投げしています。実のところ、どういう使い道があるのか よく分かりませんが、丸投げなので簡単に実装できるし、あとから追加するのも大変かも しれないので入れてあるというところです。
四則計算は通常通りです。たとえば、次の設定ではa+b*cですのでb*cの方が優先順位が高くなります。 なお、一般のプログラム言語と同様に掛け算は*、割り算は/を使います。
実行結果は次のようになります。このように掛け算の方が足し算よりも優先されます。
括弧を使うことで優先順位を変えることができます。たとえば、次の設定で足し算の方が 先に実行されます。括弧は無制限にネストできます。
この結果は次のようになります。
次は括弧を多重に使った例です。
次のような使い方もあります。
ただし、割り算には別の問題があります。最初の行のように割りきれない場合は小数点以下が たくさん並びます。また、最後の行のようにゼロで割るときには、その割り算は無視されます。 これは正しい計算ではありませんが、とりあえずクラッシュさせないためです。
先ほどの割り算の場合など、割りきれない数値になるときは、丸めるためにfloor,ceilという関数が 使えます。まず、例として =440*2^(a/12)という数式を計算してみます。これは、半音単位での 平均律の音の周波数を計算する式です。
結果は次のようになります。やはり、桁数が必要以上に大きくなります。
floorという関数は切り捨て、ceilという関数は切り上げをします。先に0.5を足してから切り捨てると 四捨五入になります。
ここでは四捨五入をしてみます。=floor(440*2^(a/12)+0.5)とすると次のようになります。 切捨てと切り上げの場合はそれぞれ練習問題にして下さい。
ここで、一応数学関数について説明しておきます。要するにANSI-Cのライブラリに丸投げしています。 ですから角度の単位はラジアンです。ここでは度に直して表にしました。
例によって、桁数が多くなっています。円周率の精度が低いので誤差が大きくなっていますが、 ある程度の誤差はつきものです。
そこで、小数点以下四桁で丸めることにします。これには10000倍にしてから丸め、そのあとで 10000で割ります。ここでは四捨五入しないとほんの僅かの誤差が拡大されることになります。
結果は次のようになります。
以上で説明した丸め関数は、実際にデータを変化させます。このあたりは、エクセルなどで用意されて いる表示桁数を設定する機能とは違います。表示桁数の設定については、今後の検討課題です。 そもそも数学関数を使うのかなという疑問もありますし。
これらの関数は工夫次第でいろいろな使い方ができます。たとえば=(a+abs(a))/2とすると、 正の数では元のままですが、負の数では相殺されてゼロになります。
結果は次のようになります。
max,minは任意の個数の引数をとり、その中での最大と最小を計算します。ここでは、次のような 例を計算しました。
この結果は次のようになります。
このあたりの機能はクロス集計やフリーセル機能にもありますが、やや不統一な面もあります。 いずれ、合わせて行くことになるでしょう。内容的にも改良すると思います。問題は中間変数のような ものを認めるかどうかということもあります。あまり複雑にしすぎても使いにくいですし。
の来客がありました。
現在位置
Top->i02