Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/tukinami/saori-calcs

四則演算+剰余の計算をするSAORI。
https://github.com/tukinami/saori-calcs

sirefaso ukagaka ukagaka-saori

Last synced: 28 days ago
JSON representation

四則演算+剰余の計算をするSAORI。

Awesome Lists containing this project

README

        

# Calcs

[GitHub repository](https://github.com/tukinami/saori-calcs)

## これは何?

デスクトップマスコット、「伺か」で使用できる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整数の値に収まるように値が丸められるため、極端に大きい、もしくは小さい値は正確ではありません。
そちらもご了承ください。

## 使用方法の例

### 里々(簡易)

#### satori_conf.txt

```
@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](https://github.com/retep998/winapi-rs) / Peter Atashian
+ (テスト実行時) [encoding\_rs](https://github.com/hsivonen/encoding_rs) / Henri Sivonen

## ライセンス

MITにて配布いたします。

## 作成者

月波 清火 (tukinami seika)

[GitHub](https://github.com/tukinami)