Help:计算
维基百科,自由的百科全书
借助于Mediawiki的扩展“函数解析器”,进行计算变得可行。
- 注意:目前此功能还有bug,详情见meta:Talk:ParserFunctions#Bugs。
expr函数,计算数学表达式。语法为:
{{ #expr: 表达式 }}
表达式支持的运算符有:
运算符 | 名称 | 优先级 | 元数 | 结合性 | 样例 |
---|---|---|---|---|---|
+ | 正 | 9 | 1 | 右 | {{#expr: + 7}} = 7 |
- | 负 | 9 | 1 | 右 | {{#expr: - 7}} = -7 |
not | 逻辑非 | 9 | 1 | 右 | {{#expr: not 7}} = 0 |
* | 乘 | 8 | 2 | 左 | {{#expr: 30 * 7}} = 210 |
/ | 除 | 8 | 2 | 左 | {{#expr: 30 / 7}} = 4.2857142857143 |
div | 除 | 8 | 2 | 左 | {{#expr: 30 div 7}} = 4.2857142857143 |
mod | 模 | 8 | 2 | 左 | {{#expr: 30 mod 7}} = 2 |
+ | 加 | 6 | 2 | 左 | {{#expr: 30 + 7}} = 37 |
- | 减 | 6 | 2 | 左 | {{#expr: 30 - 7}} = 23 |
round | 舍入 | 5 | 2 | 左 | {{#expr: 30 / 7 round 7}} = 4.2857143 |
= | 等于 | 4 | 2 | 左 | {{#expr: 30 = 7}} = 0 |
< | 小于 | 4 | 2 | 左 | {{#expr: 30 < 7}} = 0 |
> | 大于 | 4 | 2 | 左 | {{#expr: 30 > 7}} = 1 |
<= | 小于等于 | 4 | 2 | 左 | {{#expr: 30 <= 7}} = 0 |
>= | 大于等于 | 4 | 2 | 左 | {{#expr: 30 >= 7}} = 1 |
<> | 不等于 | 4 | 2 | 左 | {{#expr: 30 <> 7}} = 1 |
!= | 不等于 | 4 | 2 | 左 | {{#expr: 30 != 7}} = 1 |
and | 逻辑与 | 3 | 2 | 左 | {{#expr: 30 and 7}} = 1 |
or | 逻辑或 | 2 | 2 | 左 | {{#expr: 30 or 7}} = 1 |
round运算对运算数正负,位数正负都有不同的表现,参见下例。
逻辑运算符把假映射为0,把真映射为非0,且返回值只有0或1。
同一表达式中先计算高优先级运算。括号优先级高于一切。
目录 |
[编辑] 样例
{{#expr: (100 - 32) / 9 * 5 round 0 }}
= 38:摄氏华氏温度度转换{{#expr: 3 < 2 < 1}}
= 1{{#expr: 2 = 2 = 1}}
= 1:与数学表达式不同,“=”、“<”、“>”等运算符有返回值{{#expr: 999 * 999 round -2}}
= 998000{{#expr: 999 * 999 round -20}}
= 0{{#expr: 999 * 999 round -2.9}}
= 998000:round的危险用法{{#expr: 0 or 1 and 0}}
= 0:优先级演示{{#expr: 10.9 mod 2}}
= 0:mod的危险用法{{#expr: 30------7}}
= 23{{#expr: 30+++++7}}
= 37:“+”、“-”运算符有两种含义{{#expr: .}}
= 0{{#expr: .1.1}}
= 0.1:实数表达法的强壮性{{#expr: ( ( ) )}}
= :特殊的括号用法,没有实际意义{{#expr: 999999999*...*999999999}}
= INF:数字上溢的结果
[编辑] 错误
此函数进行错误检查并给出信息。
- Expression error: stack exhausted:表达式太长,栈耗尽;
- Expression error: unexpected number:不可预期的数字;
- Expression error: unexpected preg_match failure:运算符匹配失败;
- Expression error: unrecognised word "$1":不可识别的运算符;
- Expression error: unexpected $1 operator:不可预期的运算符;
- Expression error: Missing operand for $1:缺少运算数;
- Expression error: unexpected closing bracket:不可预料的“)”
- Expression error: unrecognised punctuation character "$1":不可识别的标点字符;
- Expression error: unclosed bracket:缺少“)”
- Division by zero:零除错误。
[编辑] 错误的样例
{{#expr: ---...---1}}(110个“-”)
= 表达错误: 堆叠耗尽{{#expr: ( ) 1}}
= 表达错误: 未预料的数字{{#expr: 2 d 1}}
= 表达错误: 未预料的字 "d"{{#expr: * 1}}
= 表达错误: 未预料的 * 运算符{{#expr: -}}
= 表达错误: 缺少 - 的运算符{{#expr: ( 1 ) )}}
= 表达错误: 未预料的关括号{{#expr: 壹}}
= 表达错误: 未能认得到的标点 "�"{{#expr: ( 1}}
= 表达错误: 未关闭的括号{{#expr: 1 / 0}}
= 除以零
[编辑] 误差
浮点误差有可能造成某些运算的不可预料的结果,特别是最后几位数字的不精确。因此在使用此函数进行实数运算时,注意不要进行比较运算。
[编辑] 注意内部数字表示
{{#expr: 100000000000000000}}
= 1.0E+17{{#expr: {{#expr: 100000000000000000}}}}
= 1.0E+17{{#expr: (-1.5-0.5 round 0)+2}}
= 0{{#expr: -0.1 round 0}}
= -0
在返回值中,有可能出现无法再计算的数的情况,或者有一部分有效数字没有显示出来。因此在使用此函数进行运算时,须注意这些问题。
[编辑] 参见
|
||
---|---|---|
維基計劃的zh-hant:說明; zh-hans:帮助目錄 | 元維基(簡體 · 繁體) · 維基百科 · 維基新聞 · 維基語錄 · 維基詞典 · 維基教科書 · 維基文庫 · 維基共享資源 · 維基物種 · 維基學院 · MediaWiki | |
維基計劃的所有zh-hant:說明; zh-hans:帮助名字空間 | 元維基 · 維基百科 · 維基新聞 · 維基語錄 · 維基詞典 · 維基教科書 · 維基文庫 · 維基共享資源 · 維基物種 · 維基學院 · MediaWiki | |
讀者手冊 | 链接 · 搜索 · 分类 · 重定向 · 章节 · 名字空间 · URL · 跨语言链接 · 打印页面 · 随机页面 · 特殊页面 | |
访问、登入和參數設置 | 访问 · 登入 · 参数设置 · 用户样式 | |
跟踪更改 | 页面历史 · 差异 · 链入页面 · 链出更改 · 最近更改 · 增强的最近更改 · 监视列表 · 编辑摘要 · 用户贡献 · 小修改 | |
编辑 | 创建新页面 · 编辑页面 · 表格 · 图像 · 模板 · HTML · 页面重命名 · 特殊字符 · 回退 · 脚注 · 國際標準書號 · 签名 · 繁簡處理 | |
高级 | 变量 · 魔术字 · 默认参数 · 模板扩展语法 · 替换引用 · 计算 · 数学公式 · 简易时间线语法 · 输入框 |