デスクトップマスコット、「伺か」で使用できるSAORIの一種です。
与えられた四則演算+剰余の式を評価し、値を返します。
SHIORI「里々」での使用を意図しており、全角文字が使えます。 また、整数計算で値が溢れた際、里々の限界値まで値を丸めます。
「伺か」「SAORI」等の用語については詳しく説明いたしませんのでご了承下さい。
SAORI自体の使い方は、使用するSHIORIなどによって異なりますので、ご自身でお調べ下さい。
ここではこのSAORIの使い方について説明いたします。
里々で使用する場合は、特殊変数「SAORI引数の計算」を一時的に無効にして使用してください。 このSAORIに届く前に式が計算され、期待した値がでないことがあります。
以下の引数を指定して使用します。
- Argument0: 計算モード文字列(後述)、もしくは空
- Argument1: 四則演算+剰余からなる式の文字列(書式は後述)
ResultにError_
という文字列のあと、失敗理由が|
区切りで返ります。
主に、式の書き方が間違っているときや、計算できなかったときに返ります。
失敗例は以下。
(calcs、前切り捨て、aaa)→Error_字句解析エラー: 解析できない文字があります 1文字目|字句解析エラー: 解析できない文字があります 2文字目|字句解析エラー: 解析できない文字があります 3文字目
Resultに結果の数字が半角で返ります。
小数点数値を扱いを指定できます。省略した場合は何もせず、小数点数値のまま計算します。
扱いには大きく分けて2つあり、計算前に整数に直すか、全ての計算が終わった後に整数に直すか選べます。
例として、「前切り捨て」モードと「後切り捨て」モードでは以下のような違いがでます。
(calcs、前切り捨て、1.8+1.2)→2
(calcs、後切り捨て、1.8+1.2)→3
(calcs、前切り捨て、1.5÷0.3)→Error_実行時エラー: 計算結果がオーバーフローしました 計算: 1.5(小数)/0.3(小数)
(calcs、後切り捨て、1.5÷0.3)→5
モード名(日本語) | モード名(英語) | 動作 |
---|---|---|
前切り捨て | before_floor | 計算前に小数点以下を切り捨てます。 |
後切り捨て | after_floor | 計算した後に、小数点以下を切り捨てます。 |
前切り上げ | before_ceil | 計算前に、小数点以下を切り上げます。 |
後切り上げ | after_ceil | 計算した後に、小数点以下を切り上げます。 |
前丸め | before_round | 計算前に、小数点以下を四捨五入します。 |
後丸め | after_round | 計算した後に、小数点以下を四捨五入します。 |
演算 | 該当する文字 |
---|---|
括弧 | () |
乗算 | **× |
除算 | /÷/ |
剰余 | %% |
加算 | ++ |
減算 | -−- |
優先順位が高い順に並んでいます。
括弧については、全角括弧も対応していますが、里々の仕様上思わぬ値が入る可能性があるので、半角括弧を推奨いたします。
剰余(割った余り)については、整数同士のときのみ動作します。それ以外の場合はエラーを返します。
数値はアラビア数字(0〜9、0〜9)なら全角・半角どちらでも可能です。 また、小数点も全角(.)・半角(.)どちらでも可能です。
数値と演算子の間には空白を含めることも可能です。
もし、計算前に整数にするモードでなく、整数と小数点数値同士を計算することがあれば、整数を小数点数値に直してから計算しています。 また、演算は1段階ずつ行なわれています。 よって、数値によっては微細なズレが生じる可能性があります。ご了承ください。
また、前述の通り、里々の限界値である符号付き32bit整数の値に収まるように値が丸められるため、極端に大きい、もしくは小さい値は正確ではありません。 そちらもご了承ください。
@SAORI
お好きな登録名,path/to/calcs.dll
*テスト
$SAORI引数の計算 無効
#結果: 6
(お好きな登録名、前切り上げ、1.2+3.3)
#結果: 5
(お好きな登録名、後切り上げ、1.2+3.3)
#結果: 4.5
(お好きな登録名、、1.2+3.3)
$SAORI引数の計算 自動
いずれも敬称略。ありがとうございます。
- winapi_rs / Peter Atashian
- (テスト実行時) encoding_rs / Henri Sivonen
MITにて配布いたします。
月波 清火 (tukinami seika)