CodeCalc

CodeCalc 公开 已提交,待审核

ding咕咕嘎嘎 分享于 1小时20分钟前 | 0 | 1
如何安装动作?
复制Ta的推荐码
定制,修改动作。q:3610406836

适用于
分类(旧)
查询搜索 文本处理 编程相关
关键词



更多信息
分享时间 1小时20分钟前
最后更新 1小时20分钟前
修订版本 0
用户许可 只读,不可再分享
Quicker版本 1.45.5
动作大小 49.7 KB
最低Quicker版本 1.38.15

分享到

「CodeCalc」

简介

## 功能


| 分类 | 功能 | 示例 |

|------|------|------|

| 基本运算 | 加减乘除、整除、取余、幂 | `2+3`, `10//3`, `2**10` |

| 位运算 | 与、或、异或、取反、移位 | `5&3`, `8>>1`, `~0` |

| 变量赋值 | 基本赋值、复合赋值 | `a=1`, `a+=5`, `a*=2` |

| 数学函数 | 三角、对数、指数、取整 | `sin(PI)`, `lg(100)`, `sqrt(144)` |

| 字符串 | 拼接、属性、Base64 | `"Hi"+".upper`, `"Hi".base64` |

| 进制转换 | 输入/输出各进制 | `0xFF`, `255.bin`, `255.hex` |

| 角度转换 | 弧度/角度互转 | `rad(180)`, `deg(PI)` |

| 时间戳 | 当前时间、日期运算 | `@now`, `@today+#1d` |

| 时间段 | 时间长度运算 | `#1d2h3s`, `#1y+#6m` |

| 矩阵 | 创建、运算、分析 | `{1,2;3,4}`, `det(A)`, `inv(A)` |

| 常量 | PI、e | `PI`, `e` |

| x 乘号 | 未定义 x 时作乘号 | `3x4`, `3 x 4` |


## 交互


| 操作 | 说明 |

|------|------|

| 点击表达式 | 回填到输入框并全选,方便修改后重新计算 |

| 复制按钮 | 复制计算结果到剪贴板 |

| 标题栏拖拽 | 移动窗口位置 |


## 快捷键


| 功能 | 快捷键 |

|------|--------|

| 计算 | `Enter` |

| 关闭窗口 | `Escape` |

| 清空页面 | `Ctrl+K` |


## 运算符优先级(从低到高)


1. 赋值 `= += -= *= /= %=`

2. 时间单位转换 `> #unit`

3. 逻辑或 `or`

4. 逻辑与 `and`

5. 位或 `|`、位与 `&`

6. 位异或 `^`

7. 比较 `== != < > <= >=`

8. 移位 `<< >>`

9. 加减 `+ -`

10. 乘除 `* / // % **`

11. 一元 `- + ~ !`

12. 属性访问 `.bin .hex .T .det ...`

13. 基本表达式 `()` `[]` `{}` 函数调用 字面量


## 关键技巧


1. **x 乘号**:`3x4` 中 `x4` 被 tokenizer 读为标识符,ParseMul 特殊处理以 `x` 开头的标识符

2. **进制属性**:`.bin` `.hex` `.oct` 在 ParsePostfix 中处理,不依赖函数调用

3. **时间戳**:`@now` `@today` `@2024-1-1` 在 ParseTimestamp 中处理

4. **时间段**:`#1d2h3s` 在 ParseDuration 中解析各时间单位

5. **矩阵**:`[1,2,3]` 列向量、`{1,2;3,4}` 矩阵,分号分隔行

6. **点击回填**:表达式 TextBlock 注册 `MouseLeftButtonDown`,点击后将表达式文本回填到 InputBox 并 `SelectAll()` + `Focus()`,hover 时文字变亮 + 手形光标


## 测试清单


### 基本运算

- [x] `2+3` = 5

- [x] `2**10` = 1024

- [x] `10//3` = 3

- [x] `10%3` = 1


### 位运算

- [x] `5&3` = 1

- [x] `5|3` = 7

- [x] `5^3` = 6

- [x] `~0` = -1

- [x] `8>>1` = 4

- [x] `1<<3` = 8


### 数学函数

- [x] `sin(0)` = 0

- [x] `cos(0)` = 1

- [x] `sqrt(144)` = 12

- [x] `abs(-42)` = 42

- [x] `lg(100)` = 2

- [x] `pow(2,8)` = 256


### 变量

- [x] `a=10`, `b=20`, `a+b` = 30

- [x] `a+=5` = 15


### 字符串

- [x] `"Hello".base64` = SGVsbG8=

- [x] `"Hello".length` = 5

- [x] `"Hello".upper` = HELLO


### 进制转换

- [x] `0xFF` = 255

- [x] `255.bin` = 0b11111111

- [x] `255.hex` = 0xFF


### 矩阵

- [x] `[1,2,3]` 列向量

- [x] `{1,2,3}` 行向量

- [x] `eye(2)` 单位矩阵

- [x] `det({1,2;3,4})` = -2


### 时间

- [x] `#1d` = 86400000

- [x] `#1d+#2h` = 93600000

- [x] `@now` 返回当前时间戳


### x 乘号

- [x] `3x4` = 12

- [x] `3 x 4` = 12


最近更新

修订版本 更新时间 更新说明
0 1小时20分钟前

最近讨论

暂无讨论