この組織モードのドキュメントを考えると:
| 4 | ? |
#+TBLFM: $2=$1/2*2
数式を評価すると、(2番目のセルに)(4/2 * 2 =)4ではなく、驚くべき結果1が生成されます。
どうやら、乗算は組織モードの数式で除算よりも優先度が高いため、予期せぬ結果が(ときどき黙って)生成される可能性があります。
ほとんどのインフィックス表記のように、組織モードの数式で一般的な算術演算子の優先順位を使用する方法はありますか?
この組織モードのドキュメントを考えると:
| 4 | ? |
#+TBLFM: $2=$1/2*2
数式を評価すると、(2番目のセルに)(4/2 * 2 =)4ではなく、驚くべき結果1が生成されます。
どうやら、乗算は組織モードの数式で除算よりも優先度が高いため、予期せぬ結果が(ときどき黙って)生成される可能性があります。
ほとんどのインフィックス表記のように、組織モードの数式で一般的な算術演算子の優先順位を使用する方法はありますか?
回答:
calc-eval
initファイルの次の設定により、orgmodeで別の言語を使用できます。
(setq org-calc-default-modes (append '(calc-language c) org-calc-default-modes))
も使用できますM-x customize-option
RET org-calc-default-modes
。キーcalc-language
と値を含むエントリを挿入しますc
。
言語c
はここでの例にすぎません。さらに多くの言語があります。独自の言語を定義することもできます。しかし、そのためにはいくつかのスキルが必要です...
org-mode
calc
式の計算に使用し、calc
非標準の演算子の優先順位を使用します。組織マニュアルから(org) Formula syntax for Calc
:
式は、Emacsの「Calc」パッケージが理解できる任意の代数式とすることができます。「calc」には「/」が「*」よりも優先順位が低いという非標準の規則があるため、「a / b * c」は「a /(b * c)」として解釈されることに注意してください。
つまり、ブラケットを使用して標準の演算子の優先順位を課す必要があります。つまり、
| 4 | ? |
#+TBLFM: $2=($1/2)*2