Chiyansama(對話 | 貢獻) (创建页面,内容为“{{操作指南|shortcut1=H:CALC}}{{Other uses |subject = 關於僅需要使用簡單的'''實數運算'''的場合 |other = 需要使用到複數、複變數、四元數或特殊代數運算的場合 |Template:複變運算 }} 借助于Mediawiki的扩展“函数解析器”,进行计算变得可行。<tt>expr解析器</tt>函数可以用于计算代数表达式。语法为:{{Squote| :{{((}}#expr: ''表达式'' {…”) |
Chiyansama(對話 | 貢獻) (// Edit via Wikiplus) |
||
第1行: | 第1行: | ||
{{操作指南|shortcut1=H:CALC}}{{Other uses |
{{操作指南|shortcut1=H:CALC}}{{Other uses |
||
|subject = |
|subject = 关於仅需要使用简单的'''[[实数]]运算'''的场合 |
||
|other = 需要使用到[[ |
|other = 需要使用到[[复数 (数学)|复数]]、[[复分析|复变数]]、[[四元数]]或特殊[[代数]]运算的场合 |
||
|Template: |
|Template:复变运算 |
||
}} |
}} |
||
借助于Mediawiki的扩展“函数解析器”,进行计算变得可行。<tt>expr解析器</tt>函数可以用于计算代数表达式。语法为:{{Squote| |
借助于Mediawiki的扩展“函数解析器”,进行计算变得可行。<tt>expr解析器</tt>函数可以用于计算代数表达式。语法为:{{Squote| |
||
第59行: | 第59行: | ||
== 样例 == |
== 样例 == |
||
*<code><nowiki>{{#expr: (100 - 32) / 9 * 5 round 0 }}</nowiki></code> = {{#expr: (100 - 32) / 9 * 5 round 0 }}:[[ |
*<code><nowiki>{{#expr: (100 - 32) / 9 * 5 round 0 }}</nowiki></code> = {{#expr: (100 - 32) / 9 * 5 round 0 }}:[[摄氏温标|摄氏]][[华氏温标|华氏]][[温度]]的[[度_(温度)|度单位]][[温度单位换算|转换]] |
||
*<code><nowiki>{{#expr: 3 < 2 < 1}}</nowiki></code> = {{#expr: 3 < 2 < 1}} |
*<code><nowiki>{{#expr: 3 < 2 < 1}}</nowiki></code> = {{#expr: 3 < 2 < 1}} |
||
*<code><nowiki>{{#expr: 2 = 2 = 1}}</nowiki></code> = {{#expr: 2 = 2 = 1}}:与数学表达式不同,“=”、“<”、“>”等运算符有返回值 |
*<code><nowiki>{{#expr: 2 = 2 = 1}}</nowiki></code> = {{#expr: 2 = 2 = 1}}:与数学表达式不同,“=”、“<”、“>”等运算符有返回值 |
||
第72行: | 第72行: | ||
*<code><nowiki>{{#expr: .1.1}}</nowiki></code> = {{#expr: .1.1}}:[[实数]]表达法的多样性(多出的小数点会被无视) |
*<code><nowiki>{{#expr: .1.1}}</nowiki></code> = {{#expr: .1.1}}:[[实数]]表达法的多样性(多出的小数点会被无视) |
||
*<code><nowiki>{{#expr: ( ( ) )}}</nowiki></code> = {{#expr: ( ( ) )}}:特殊的[[括号]]用法,没有实际意义 |
*<code><nowiki>{{#expr: ( ( ) )}}</nowiki></code> = {{#expr: ( ( ) )}}:特殊的[[括号]]用法,没有实际意义 |
||
*<code><nowiki>{{#expr: 999999999*...*999999999}}</nowiki></code> = {{#expr: 999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999}}:[[算 |
*<code><nowiki>{{#expr: 999999999*...*999999999}}</nowiki></code> = {{#expr: 999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999*999999999}}:[[算术溢位|数字上溢]]的结果 |
||
*<code><nowiki>{{#expr:(-1)^0.5}}</nowiki></code> = {{#expr:(-1)^0.5}}: |
*<code><nowiki>{{#expr:(-1)^0.5}}</nowiki></code> = {{#expr:(-1)^0.5}}:无法对[[虚数单位]]进行计算 |
||
*<code><nowiki>{{Root|(-1)}}</nowiki></code> = {{Root|(-1)}}:使用[[Template:Root|根 |
*<code><nowiki>{{Root|(-1)}}</nowiki></code> = {{Root|(-1)}}:使用[[Template:Root|根号模板]](详见[[Template:复变运算]]) |
||
*<code><nowiki>{{ |
*<code><nowiki>{{复变运算|(-1)^0.5}}</nowiki></code> = {{复变运算|(-1)^0.5}}:使用[[Template:复变运算|复变运算模板]] |
||
*<code><nowiki>{{ |
*<code><nowiki>{{复变运算|e^(((-1)^0.5) * pi)}}</nowiki></code> = {{复变运算|e^(((-1)^0.5) * pi)}}:[[欧拉恒等式]] |
||
*<code><nowiki>{{#expr:e^(((-1)^0.5) * pi)}}</nowiki></code> = {{#expr:e^(((-1)^0.5) * pi)}}: |
*<code><nowiki>{{#expr:e^(((-1)^0.5) * pi)}}</nowiki></code> = {{#expr:e^(((-1)^0.5) * pi)}}:对比使用普通运算功能的[[欧拉恒等式]] |
||
== |
== 详细运算子、函数、常数说明 == |
||
{| class="wikitable sortable" |
{| class="wikitable sortable" |
||
! ''表 |
! ''表达式'' |
||
! ''<abbr title=" |
! ''<abbr title="参数数量">参数</abbr>'' |
||
! '' |
! ''运算子'' |
||
! ''PHP'' |
! ''PHP'' |
||
! '' |
! ''资料型态'' |
||
! ''<abbr title=" |
! ''<abbr title="运算子优先顺序">优先级</abbr>'' |
||
! '' |
! ''范例'' |
||
|- |
|- |
||
| {{anchor|一元 |
| {{anchor|一元减|负号}}</code>'''-'''</code> || 1 |
||
| [[一元 |
| [[一元运算#一元负数和正数|一元 '''<tt>-</tt>''' 符号]] (负号) |
||
| [http://php.net/manual/en/language.operators.arithmetic.php -] || |
| [http://php.net/manual/en/language.operators.arithmetic.php -] || 与参数相同 || {{nts|10}} || |
||
{| class="wikitable" |
{| class="wikitable" |
||
{{xpettu|-|12}} |
{{xpettu|-|12}} |
||
第98行: | 第98行: | ||
|} |
|} |
||
|- |
|- |
||
| {{anchor|科 |
| {{anchor|科学记号}}'''<code>e</code>'''<br> (位於子表达式之间)|| 2 || *10^<br>以10為底的指数<br>[[科学记号]]|| [http://php.net/manual/en/language.operators.arithmetic.php *] [http://php.net/manual/en/function.pow.php pow] (10,..) || 浮点数,除非左边的参数是整数且指数是非负整数 || {{nts|10}} |
||
| |
| |
||
第112行: | 第112行: | ||
|} |
|} |
||
错误范例: |
|||
{| class="wikitable" |
{| class="wikitable" |
||
|{{xpett|e4}} |
|{{xpett|e4}} |
||
第119行: | 第119行: | ||
|- |
|- |
||
| '''<code>exp</code>''' || 1 |
| '''<code>exp</code>''' || 1 |
||
| [[指数函数|自然指 |
| [[指数函数|自然指数函数 e<sup>x</sup>]] |
||
| [http://php.net/manual/en/function.exp.php exp] || 浮 |
| [http://php.net/manual/en/function.exp.php exp] || 浮点数 || {{nts|9}} || |
||
{| class="wikitable" |
{| class="wikitable" |
||
{{xpettu|exp|43}} |
{{xpettu|exp|43}} |
||
第128行: | 第128行: | ||
|} |
|} |
||
比 |
比较: |
||
{| class="wikitable" |
{| class="wikitable" |
||
|{{xpett|e^43}} |
|{{xpett|e^43}} |
||
第138行: | 第138行: | ||
|- |
|- |
||
| '''<code>ln</code>''' || 1 |
| '''<code>ln</code>''' || 1 |
||
| [[自然 |
| [[自然对数]] |
||
| [http://php.net/manual/en/function.log.php <sup>log</sup>] || 浮 |
| [http://php.net/manual/en/function.log.php <sup>log</sup>] || 浮点数 || {{nts|9}} || |
||
{| class="wikitable" |
{| class="wikitable" |
||
{{xpettu|ln|2}} |
{{xpettu|ln|2}} |
||
第146行: | 第146行: | ||
{{xpettu|ln|.5e-323}} |
{{xpettu|ln|.5e-323}} |
||
|} |
|} |
||
可用 |
可用换底公式转换為常用对数,例如 log 2 ≒ 0.3010: |
||
{| class="wikitable" |
{| class="wikitable" |
||
|{{xpett|ln2/ln10}} |
|{{xpett|ln2/ln10}} |
||
第153行: | 第153行: | ||
|- |
|- |
||
| '''<code>abs</code>''' || 1 |
| '''<code>abs</code>''' || 1 |
||
| [[ |
| [[绝对值]] |
||
| [http://php.net/manual/en/function.abs.php abs] || 同於 |
| [http://php.net/manual/en/function.abs.php abs] || 同於输入值,并且非负 || {{nts|9}} || |
||
{| class="wikitable" |
{| class="wikitable" |
||
{{xpettu|abs|-2}} |
{{xpettu|abs|-2}} |
||
第163行: | 第163行: | ||
| '''<code>sqrt</code>''' || 1 |
| '''<code>sqrt</code>''' || 1 |
||
| [[平方根]] |
| [[平方根]] |
||
| [http://php.net/manual/en/function.sqrt.php sqrt] || 浮 |
| [http://php.net/manual/en/function.sqrt.php sqrt] || 浮点数 || {{nts|9}} || |
||
{| class="wikitable" |
{| class="wikitable" |
||
{{xpettu|sqrt| 4}} |
{{xpettu|sqrt| 4}} |
||
第169行: | 第169行: | ||
{{xpettu|sqrt| 1e19}} |
{{xpettu|sqrt| 1e19}} |
||
|} |
|} |
||
此平方根 |
此平方根计算无法处理结果為[[虚数]]或[[复数 (数学)|复数]]的情况<br>即对负值进行平方根会发生错误: |
||
{| class="wikitable" |
{| class="wikitable" |
||
{{xpettu|sqrt|-1}} |
{{xpettu|sqrt|-1}} |
||
第175行: | 第175行: | ||
|- |
|- |
||
| '''<code>trunc</code>''' || 1 |
| '''<code>trunc</code>''' || 1 |
||
| [[截尾函 |
| [[截尾函数]] |
||
| [http://php.net/manual/en/language.types.integer.php#language.types.integer.casting (int)], 即[[类型转换| |
| [http://php.net/manual/en/language.types.integer.php#language.types.integer.casting (int)], 即[[类型转换|转换型态]]為[[整数]] || 整数 || {{nts|9}} || |
||
{| class="wikitable" |
{| class="wikitable" |
||
{{xpettu|trunc|1.2}} |
{{xpettu|trunc|1.2}} |
||
第190行: | 第190行: | ||
| '''<code>floor</code>''' || 1 |
| '''<code>floor</code>''' || 1 |
||
| [[取整函数|向下取整函数]] |
| [[取整函数|向下取整函数]] |
||
| [http://php.net/manual/en/function.floor.php floor] || 浮 |
| [http://php.net/manual/en/function.floor.php floor] || 浮点数 || {{nts|9}} || |
||
{| class="wikitable" |
{| class="wikitable" |
||
{{xpettu|floor|1.2}} |
{{xpettu|floor|1.2}} |
||
第199行: | 第199行: | ||
| '''<code>ceil</code>''' || 1 |
| '''<code>ceil</code>''' || 1 |
||
| [[取整函数|向上取整函数]] |
| [[取整函数|向上取整函数]] |
||
| [http://php.net/manual/en/function.ceil.php ceil] || 浮 |
| [http://php.net/manual/en/function.ceil.php ceil] || 浮点数 || {{nts|9}} || |
||
{| class="wikitable" |
{| class="wikitable" |
||
{{xpettu|ceil|1.2}} |
{{xpettu|ceil|1.2}} |
||
第207行: | 第207行: | ||
|- |
|- |
||
| '''<code>sin</code>''' || 1 |
| '''<code>sin</code>''' || 1 |
||
| [[正弦函 |
| [[正弦函数]] |
||
| [http://php.net/manual/en/function.sin.php sin] || 浮 |
| [http://php.net/manual/en/function.sin.php sin] || 浮点数 || {{nts|9}} || |
||
{| class="wikitable" |
{| class="wikitable" |
||
{{xpettu|sin|.1}} |
{{xpettu|sin|.1}} |
||
{{xpettu|sin| trunc1}} |
{{xpettu|sin| trunc1}} |
||
|} |
|} |
||
若要使用角度(如30°)可表 |
若要使用角度(如30°)可表达為: |
||
{| class="wikitable" |
{| class="wikitable" |
||
|{{xpett|sin(30*pi/180)}} |
|{{xpett|sin(30*pi/180)}} |
||
第220行: | 第220行: | ||
|- |
|- |
||
| '''<code>cos</code>''' || 1 |
| '''<code>cos</code>''' || 1 |
||
| [[餘弦函 |
| [[餘弦函数]] |
||
| [http://php.net/manual/en/function.cos.php cos] || 浮 |
| [http://php.net/manual/en/function.cos.php cos] || 浮点数 || {{nts|9}} || |
||
{| class="wikitable" |
{| class="wikitable" |
||
{{xpettu|cos|.1}} |
{{xpettu|cos|.1}} |
||
第228行: | 第228行: | ||
|- |
|- |
||
| '''<code>tan</code>''' || 1 |
| '''<code>tan</code>''' || 1 |
||
| [[正切函 |
| [[正切函数]] |
||
| [http://php.net/manual/en/function.tan.php tan] || 浮 |
| [http://php.net/manual/en/function.tan.php tan] || 浮点数 || {{nts|9}} || |
||
{| class="wikitable" |
{| class="wikitable" |
||
{{xpettu|tan|.1}} |
{{xpettu|tan|.1}} |
||
第237行: | 第237行: | ||
| '''<code>asin</code>''' || 1 |
| '''<code>asin</code>''' || 1 |
||
| [[反正弦]] |
| [[反正弦]] |
||
| [http://php.net/manual/en/function.asin.php asin] || 浮 |
| [http://php.net/manual/en/function.asin.php asin] || 浮点数 || {{nts|9}} || |
||
{| class="wikitable" |
{| class="wikitable" |
||
{{xpettu|asin|.1}} |
{{xpettu|asin|.1}} |
||
第245行: | 第245行: | ||
| '''<code>acos</code>''' || 1 |
| '''<code>acos</code>''' || 1 |
||
| [[反餘弦]] |
| [[反餘弦]] |
||
| [http://php.net/manual/en/function.acos.php acos] || 浮 |
| [http://php.net/manual/en/function.acos.php acos] || 浮点数 || {{nts|9}} || |
||
{| class="wikitable" |
{| class="wikitable" |
||
{{xpettu|acos|.1}} |
{{xpettu|acos|.1}} |
||
第254行: | 第254行: | ||
| '''<code>atan</code>''' || 1 |
| '''<code>atan</code>''' || 1 |
||
| [[反正切]] |
| [[反正切]] |
||
| [http://php.net/manual/en/function.atan.php atan] || 浮 |
| [http://php.net/manual/en/function.atan.php atan] || 浮点数 || {{nts|9}} || |
||
{| class="wikitable" |
{| class="wikitable" |
||
{{xpettu|atan|.1}} |
{{xpettu|atan|.1}} |
||
第263行: | 第263行: | ||
| '''<code>not</code>''' || 1 |
| '''<code>not</code>''' || 1 |
||
| [[逻辑非]] |
| [[逻辑非]] |
||
| [http://www.php.net/manual/en/language.operators.logical.php !] || 以整 |
| [http://www.php.net/manual/en/language.operators.logical.php !] || 以整数表达<br>的[[布林值]]<br> (1 或 0) || {{nts|9}} || |
||
{| class="wikitable" |
{| class="wikitable" |
||
{{xpettu|not|0}} |
{{xpettu|not|0}} |
||
第272行: | 第272行: | ||
|- |
|- |
||
| '''<code>^</code>''' || 2 |
| '''<code>^</code>''' || 2 |
||
| [[ |
| [[幂]] ([[指数]]) |
||
| [http://php.net/manual/en/function.pow.php pow] || 原 |
| [http://php.net/manual/en/function.pow.php pow] || 原则上為浮点数。若底数為整数且指数為非负整数则為整数 || {{nts|8}} || |
||
{| class="wikitable" |
{| class="wikitable" |
||
{{xpettb|2|^|3}} |
{{xpettb|2|^|3}} |
||
第288行: | 第288行: | ||
| '''<code>*</code>''' || 2 |
| '''<code>*</code>''' || 2 |
||
| [[乘法]] |
| [[乘法]] |
||
| [http://php.net/manual/en/language.operators.arithmetic.php *] || 若 |
| [http://php.net/manual/en/language.operators.arithmetic.php *] || 若两参数為整数,则為整数,否则為浮点数 || {{nts|7}} || |
||
{| class="wikitable" |
{| class="wikitable" |
||
{{xpettb|2|*|3}} |
{{xpettb|2|*|3}} |
||
第297行: | 第297行: | ||
|} |
|} |
||
|- |
|- |
||
| '''<code>/</code>''' (或 |
| '''<code>/</code>''' (或写作'''div''') || 2 |
||
|| [[除法]] <br>(div非整 |
|| [[除法]] <br>(div非整数除法<ref name="divmod">'''<code>div</code>'''及'''<code>mod</code>''' 在几乎所有编程语言中都不同。</ref>) |
||
| [http://php.net/manual/en/language.operators.arithmetic.php /] || 原 |
| [http://php.net/manual/en/language.operators.arithmetic.php /] || 原则上為浮点数。若两参数皆為整数且[[整除]]则為整数 || {{nts|7}} || |
||
{| class="wikitable" |
{| class="wikitable" |
||
{{xpettb|6|/|3}} |
{{xpettb|6|/|3}} |
||
第309行: | 第309行: | ||
|- |
|- |
||
| '''<code>mod</code>''' || 2 |
| '''<code>mod</code>''' || 2 |
||
| [[模除]]。 |
| [[模除]]。 实行[[带餘除法]]<br>时会将前后两数截<br>成整数。<ref name="divmod"/> |
||
| [http://php.net/manual/en/language.operators.arithmetic.php %] || 整 |
| [http://php.net/manual/en/language.operators.arithmetic.php %] || 整数 || {{nts|7}} || |
||
{| class="wikitable" |
{| class="wikitable" |
||
{{xpettb|30|mod|7}} |
{{xpettb|30|mod|7}} |
||
第319行: | 第319行: | ||
|} |
|} |
||
部分[[除 |
部分[[除数]]无法取餘数 (见[[#Limitations and workarounds|限制章节]]): |
||
{| class="wikitable" |
{| class="wikitable" |
||
{{xpettb|123|mod|2^64}} |
{{xpettb|123|mod|2^64}} |
||
第325行: | 第325行: | ||
|- |
|- |
||
| '''<code>fmod</code>''' || 2 |
| '''<code>fmod</code>''' || 2 |
||
| [[模除]],浮 |
| [[模除]],浮点数版本。<br>返回减去第二参数之整数<br>倍的第一参数。 |
||
| [https://www.php.net/manual/en/function.fmod.php fmod] || 浮 |
| [https://www.php.net/manual/en/function.fmod.php fmod] || 浮点数|| {{nts|7}} || |
||
{| class="wikitable" |
{| class="wikitable" |
||
{{xpettb|5.7|fmod|1.3}} |
{{xpettb|5.7|fmod|1.3}} |
||
第338行: | 第338行: | ||
| '''<code>+</code>''' || 2 |
| '''<code>+</code>''' || 2 |
||
|| [[加法]] |
|| [[加法]] |
||
| [http://php.net/manual/en/language.operators.arithmetic.php +] || 若 |
| [http://php.net/manual/en/language.operators.arithmetic.php +] || 若两参数皆為整数则為整数,其餘浮点数 || {{nts|6}} || |
||
{| class="wikitable" |
{| class="wikitable" |
||
{{xpettb|2|+|3}} |
{{xpettb|2|+|3}} |
||
第348行: | 第348行: | ||
|- |
|- |
||
| '''<code>-</code>''' || 2 |
| '''<code>-</code>''' || 2 |
||
|| [[ |
|| [[减法]] |
||
| [http://php.net/manual/en/language.operators.arithmetic.php -] || 若 |
| [http://php.net/manual/en/language.operators.arithmetic.php -] || 若两参数皆為整数则為整数,其餘浮点数 || {{nts|6}} || |
||
{| class="wikitable" |
{| class="wikitable" |
||
{{xpettb|3|-|2}} |
{{xpettb|3|-|2}} |
||
第359行: | 第359行: | ||
|- |
|- |
||
| '''<code>round</code>''' || 2 |
| '''<code>round</code>''' || 2 |
||
|| |
|| 将指定的小数位数<br>做[[数值修约|四捨五入]],若為<br>负值则会对指数<br>為数做四捨五入。 |
||
| [http://php.net/manual/en/function.round.php round] || 浮 |
| [http://php.net/manual/en/function.round.php round] || 浮点数 || {{nts|5}} || |
||
{| class="wikitable" |
{| class="wikitable" |
||
{{xpettb|9.876|round|2}} |
{{xpettb|9.876|round|2}} |
||
第371行: | 第371行: | ||
|- |
|- |
||
| '''<code>=</code>''' || 2 |
| '''<code>=</code>''' || 2 |
||
|| [[相等]]( |
|| [[相等]](数字或逻辑的<br>相等运算,不支援<br>字串比对) |
||
| [http://php.net/manual/en/language.operators.comparison.php ==] || 以整 |
| [http://php.net/manual/en/language.operators.comparison.php ==] || 以整数表达<br>的[[布林值]]<br> (1 或 0) || {{nts|4}} || |
||
{| class="wikitable" |
{| class="wikitable" |
||
{{xpettb|3.0|{{=}}|3}} |
{{xpettb|3.0|{{=}}|3}} |
||
第383行: | 第383行: | ||
|} |
|} |
||
错误用法: |
|||
{| class="wikitable" |
{| class="wikitable" |
||
|{{xpett|a{{=}}a}} |
|{{xpett|a{{=}}a}} |
||
第392行: | 第392行: | ||
|- |
|- |
||
| '''<code><</code>''' || 2 |
| '''<code><</code>''' || 2 |
||
|| [[不等|小於]](不 |
|| [[不等|小於]](不适用於字串<br>比较) |
||
| [http://php.net/manual/en/language.operators.comparison.php <] || 以整 |
| [http://php.net/manual/en/language.operators.comparison.php <] || 以整数表达<br>的[[布林值]]<br> (1 或 0) || {{nts|4}} || |
||
{| class="wikitable" |
{| class="wikitable" |
||
{{xpettb|3|<|3}} |
{{xpettb|3|<|3}} |
||
第410行: | 第410行: | ||
|- |
|- |
||
| '''<code>></code>''' || 2 |
| '''<code>></code>''' || 2 |
||
|| [[不等|大於]]( |
|| [[不等|大於]](当参数颠倒时<br>与 < 相同) |
||
| [http://php.net/manual/en/language.operators.comparison.php >] || 以整 |
| [http://php.net/manual/en/language.operators.comparison.php >] || 以整数表达<br>的[[布林值]]<br> (1 或 0) || {{nts|4}} || |
||
{| class="wikitable" |
{| class="wikitable" |
||
{{xpettb|4|>|3}} |
{{xpettb|4|>|3}} |
||
第418行: | 第418行: | ||
|- |
|- |
||
| '''<code><=</code>''' || 2 |
| '''<code><=</code>''' || 2 |
||
|| [[不等|小於等於]]( |
|| [[不等|小於等於]](当参数<br>颠倒时与 >= 相同) |
||
| [http://php.net/manual/en/language.operators.comparison.php <=] || 以整 |
| [http://php.net/manual/en/language.operators.comparison.php <=] || 以整数表达<br>的[[布林值]]<br> (1 或 0) || {{nts|4}} || |
||
{| class="wikitable" |
{| class="wikitable" |
||
{{xpettb|3|<{{=}}|4}} |
{{xpettb|3|<{{=}}|4}} |
||
第427行: | 第427行: | ||
| '''<code>>=</code>''' || 2 |
| '''<code>>=</code>''' || 2 |
||
| [[不等|大於等於]](<的否定) |
| [[不等|大於等於]](<的否定) |
||
| [http://php.net/manual/en/language.operators.logical.php >=] || 以整 |
| [http://php.net/manual/en/language.operators.logical.php >=] || 以整数表达<br>的[[布林值]]<br> (1 或 0) || {{nts|4}} || |
||
{| class="wikitable" |
{| class="wikitable" |
||
{{xpettb|4|>{{=}}|3}} |
{{xpettb|4|>{{=}}|3}} |
||
第435行: | 第435行: | ||
| '''<code>and</code>''' || 2 |
| '''<code>and</code>''' || 2 |
||
| [[逻辑与]] |
| [[逻辑与]] |
||
| [http://php.net/manual/en/language.operators.logical.php &&] || 以整 |
| [http://php.net/manual/en/language.operators.logical.php &&] || 以整数表达<br>的[[布林值]]<br> (1 或 0) || {{nts|3}} || |
||
{| class="wikitable" |
{| class="wikitable" |
||
{{xpettb|3|and|4}} |
{{xpettb|3|and|4}} |
||
第445行: | 第445行: | ||
| '''<code>or</code>''' || 2 |
| '''<code>or</code>''' || 2 |
||
| [[逻辑或]] |
| [[逻辑或]] |
||
| [http://php.net/manual/en/language.operators.logical.php <nowiki>||</nowiki>] || 以整 |
| [http://php.net/manual/en/language.operators.logical.php <nowiki>||</nowiki>] || 以整数表达<br>的[[布林值]]<br> (1 或 0) || {{nts|2}} || |
||
{| class="wikitable" |
{| class="wikitable" |
||
{{xpettb|3|or|4}} |
{{xpettb|3|or|4}} |
||
第453行: | 第453行: | ||
|} |
|} |
||
|- |
|- |
||
| {{anchor|一元加|正 |
| {{anchor|一元加|正号}}'''<code>+</code>''' || 1 |
||
| [[一元 |
| [[一元运算#一元负数和正数|一元 '''<tt>+</tt></code>''' 符号]] (正号) |
||
| (不 |
| (不适用) || 与参数相同 || 不适用 || |
||
{| class="wikitable" |
{| class="wikitable" |
||
{{xpettu|+|1}} |
{{xpettu|+|1}} |
||
第462行: | 第462行: | ||
|} |
|} |
||
|- |
|- |
||
| {{nowrap|( |
| {{nowrap|(数字)}} || 0 |
||
| 普通十 |
| 普通十进制的无符号<br>数字([[#正号|一元加]][[#负号|减]]和 [[#科学记号|e]]<br>被视為运算符,请<br>参见本表的其他地方) || [http://nl.php.net/manual/en/function.floatval.php floatval] || 浮点数 || 不适用 |
||
| |
| |
||
{| class="wikitable" |
{| class="wikitable" |
||
第473行: | 第473行: | ||
|} |
|} |
||
|- |
|- |
||
| '''<code>e</code>'''作為<br>子表 |
| '''<code>e</code>'''作為<br>子表达式 || 0 |
||
| |
| 数学常数[[e (数学常数)|e]] || [http://php.net/manual/en/function.exp.php exp](1) || 浮点数 || 不适用 |
||
| |
| |
||
{| class="wikitable" |
{| class="wikitable" |
||
第482行: | 第482行: | ||
|- |
|- |
||
| '''<code>pi</code>''' || 0 |
| '''<code>pi</code>''' || 0 |
||
| |
| 数学常数[[圆周率]] [[圆周率|π]] || [http://php.net/manual/en/function.pi.php pi] || 浮点数 || 不适用 |
||
| |
| |
||
{| class="wikitable" |
{| class="wikitable" |
||
第502行: | 第502行: | ||
*Expression error: unclosed bracket:缺少“)” |
*Expression error: unclosed bracket:缺少“)” |
||
*Division by zero:零除错误; |
*Division by zero:零除错误; |
||
*In sqrt: Result is not a number: |
*In sqrt: Result is not a number:计算结果為虚数。 |
||
*Invalid argument for "$1": "$2":超出"$1"的定 |
*Invalid argument for "$1": "$2":超出"$1"的定义域。 |
||
=== 错误的样例 === |
=== 错误的样例 === |
||
*<code><nowiki>{{#expr: ---...---1}}(110个“-”)</nowiki></code> = {{#expr: --------------------------------------------------------------------------------------------------------------1}} |
*<code><nowiki>{{#expr: ---...---1}}(110个“-”)</nowiki></code> = {{#expr: --------------------------------------------------------------------------------------------------------------1}} |
||
第511行: | 第511行: | ||
*<code><nowiki>{{#expr: -}}</nowiki></code> = {{#expr: -}} |
*<code><nowiki>{{#expr: -}}</nowiki></code> = {{#expr: -}} |
||
*<code><nowiki>{{#expr: ( 1 ) )}}</nowiki></code> = {{#expr: ( 1 ) )}} |
*<code><nowiki>{{#expr: ( 1 ) )}}</nowiki></code> = {{#expr: ( 1 ) )}} |
||
*<code><nowiki>{{#expr: |
*<code><nowiki>{{#expr: 一}}</nowiki></code> = {{#expr: 一}} |
||
*<code><nowiki>{{#expr: ( 1}}</nowiki></code> = {{#expr: ( 1}} |
*<code><nowiki>{{#expr: ( 1}}</nowiki></code> = {{#expr: ( 1}} |
||
*<code><nowiki>{{#expr: 1 / 0}}</nowiki></code> = {{#expr: 1 / 0}} |
*<code><nowiki>{{#expr: 1 / 0}}</nowiki></code> = {{#expr: 1 / 0}} |
||
第526行: | 第526行: | ||
*<code><nowiki>{{#expr: (-1.5-0.5 round 0)+2}}</nowiki></code> = {{#expr: (-1.5-0.5 round 0)+2}} |
*<code><nowiki>{{#expr: (-1.5-0.5 round 0)+2}}</nowiki></code> = {{#expr: (-1.5-0.5 round 0)+2}} |
||
*<code><nowiki>{{#expr: -0.1 round 0}}</nowiki></code> = {{#expr: -0.1 round 0}} |
*<code><nowiki>{{#expr: -0.1 round 0}}</nowiki></code> = {{#expr: -0.1 round 0}} |
||
*<code><nowiki>{{#expr: 2017.5000 round 3}}</nowiki></code> = {{#expr: 2017.5000 round 3}}:使用 |
*<code><nowiki>{{#expr: 2017.5000 round 3}}</nowiki></code> = {{#expr: 2017.5000 round 3}}:使用时会有无法补零的情形。欲补零,可以使用{{tl|Round}}模板来解决 |
||
在返回值中,有可能出现无法'''再计算'''的数的情况,或者有一部分[[有效数字]]没有显示出来。因此在使用此函数进行运算时,须注意这些问题。 |
在返回值中,有可能出现无法'''再计算'''的数的情况,或者有一部分[[有效数字]]没有显示出来。因此在使用此函数进行运算时,须注意这些问题。 |
||
== 参见 == |
== 参见 == |
||
*[[Template: |
*[[Template:复变运算]]:MediaWiki原生的运算功能仅支援[[实数]]的运算。若需要[[复数 (数学)|复数]]或[[复分析|复变数]]甚至[[四元数]]的计算可使用[[Template:复变运算]]模板,如上述示例中对负值取平方根时。 |
||
*[[Help:模板扩展语法]] |
*[[Help:模板扩展语法]] |
||
== 注释 == |
== 注释 == |
||
[[Category: |
[[Category:维基百科文字帮助文档|JS]] |
||
{{reflist}}{{-}}{{帮助页面}} |
{{reflist}}{{-}}{{帮助页面}} |
於 2023年7月20日 (四) 16:57 的修訂
本頁是操作指南,介紹了有獸檔案館社區的實踐經驗及操作慣例。
本頁不屬於有獸檔案館的條例或規則;若本頁內容與相關條例不一致的,以條例內容為準。
本頁不屬於有獸檔案館的條例或規則;若本頁內容與相關條例不一致的,以條例內容為準。
藉助於Mediawiki的擴展「函數解析器」,進行計算變得可行。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: 1 or 1 and 0}}
= 1:優先級演示{{#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:數字上溢的結果{{#expr:(-1)^0.5}}
= NAN:無法對虛數單位進行計算{{Root|(-1)}}
= Template:Root:使用根號模板(詳見Template:復變運算){{复变运算|(-1)^0.5}}
= i:使用復變運算模板{{复变运算|e^(((-1)^0.5) * pi)}}
= -1:歐拉恆等式{{#expr:e^(((-1)^0.5) * pi)}}
= NAN:對比使用普通運算功能的歐拉恆等式
詳細運算子、函數、常數說明
表達式 | 參數 | 運算子 | PHP | 資料型態 | 優先級 | 範例 | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
- | 1 | 一元 - 符號 (負號) | - | 與參數相同 |
| |||||||||||||||||||
e (位於子表達式之間) |
2 | *10^ 以10為底的指數 科學記號 |
* pow (10,..) | 浮點數,除非左邊的參數是整數且指數是非負整數 |
錯誤範例:
| |||||||||||||||||||
exp |
1 | 自然指數函數 ex | exp | 浮點數 |
比較:
| |||||||||||||||||||
ln |
1 | 自然對數 | log | 浮點數 |
可用換底公式轉換為常用對數,例如 log 2 ≒ 0.3010:
| |||||||||||||||||||
abs |
1 | 絕對值 | abs | 同於輸入值,並且非負 |
| |||||||||||||||||||
sqrt |
1 | 平方根 | sqrt | 浮點數 |
此平方根計算無法處理結果為虛數或複數的情況
| |||||||||||||||||||
trunc |
1 | 截尾函數 | (int), 即轉換型態為整數 | 整數 |
| |||||||||||||||||||
floor |
1 | 向下取整函數 | floor | 浮點數 |
| |||||||||||||||||||
ceil |
1 | 向上取整函數 | ceil | 浮點數 |
| |||||||||||||||||||
sin |
1 | 正弦函數 | sin | 浮點數 |
若要使用角度(如30°)可表達為:
| |||||||||||||||||||
cos |
1 | 餘弦函數 | cos | 浮點數 |
| |||||||||||||||||||
tan |
1 | 正切函數 | tan | 浮點數 |
| |||||||||||||||||||
asin |
1 | 反正弦 | asin | 浮點數 |
| |||||||||||||||||||
acos |
1 | 反餘弦 | acos | 浮點數 |
| |||||||||||||||||||
atan |
1 | 反正切 | atan | 浮點數 |
| |||||||||||||||||||
not |
1 | 邏輯非 | ! | 以整數表達 的布林值 (1 或 0) |
| |||||||||||||||||||
^ |
2 | 冪 (指數) | pow | 原則上為浮點數。若底數為整數且指數為非負整數則為整數 |
| |||||||||||||||||||
* |
2 | 乘法 | * | 若兩參數為整數,則為整數,否則為浮點數 |
| |||||||||||||||||||
/ (或寫作div) |
2 | 除法 (div非整數除法[1]) |
/ | 原則上為浮點數。若兩參數皆為整數且整除則為整數 |
| |||||||||||||||||||
mod |
2 | 模除。 實行帶餘除法 時會將前後兩數截 成整數。[1] |
% | 整數 |
| |||||||||||||||||||
fmod |
2 | 模除,浮點數版本。 返回減去第二參數之整數 倍的第一參數。 |
fmod | 浮點數 |
| |||||||||||||||||||
+ |
2 | 加法 | + | 若兩參數皆為整數則為整數,其餘浮點數 |
| |||||||||||||||||||
- |
2 | 減法 | - | 若兩參數皆為整數則為整數,其餘浮點數 |
| |||||||||||||||||||
round |
2 | 將指定的小數位數 做四捨五入,若為 負值則會對指數 為數做四捨五入。 |
round | 浮點數 |
| |||||||||||||||||||
= |
2 | 相等(數字或邏輯的 相等運算,不支援 字串比對) |
== | 以整數表達 的布林值 (1 或 0) |
錯誤用法:
| |||||||||||||||||||
< |
2 | 小於(不適用於字串 比較) |
< | 以整數表達 的布林值 (1 或 0) |
wrong:
| |||||||||||||||||||
> |
2 | 大於(當參數顛倒時 與 < 相同) |
> | 以整數表達 的布林值 (1 或 0) |
| |||||||||||||||||||
<= |
2 | 小於等於(當參數 顛倒時與 >= 相同) |
<= | 以整數表達 的布林值 (1 或 0) |
| |||||||||||||||||||
>= |
2 | 大於等於(<的否定) | >= | 以整數表達 的布林值 (1 或 0) |
| |||||||||||||||||||
and |
2 | 邏輯與 | && | 以整數表達 的布林值 (1 或 0) |
| |||||||||||||||||||
or |
2 | 邏輯或 | || | 以整數表達 的布林值 (1 或 0) |
| |||||||||||||||||||
+ |
1 | 一元 + 符號 (正號) | (不適用) | 與參數相同 | 不適用 |
| ||||||||||||||||||
(數字) | 0 | 普通十進制的無符號 數字(一元加減和 e 被視為運算符,請 參見本表的其他地方) |
floatval | 浮點數 | 不適用 |
| ||||||||||||||||||
e 作為子表達式 |
0 | 數學常數e | exp(1) | 浮點數 | 不適用 |
| ||||||||||||||||||
pi |
0 | 數學常數圓周率 π | pi | 浮點數 | 不適用 |
|
錯誤
此函數進行錯誤檢查並給出信息。
- 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:零除錯誤;
- In sqrt: Result is not a number:計算結果為虛數。
- Invalid argument for "$1": "$2":超出"$1"的定義域。
錯誤的樣例
{{#expr: ---...---1}}(110个“-”)
= 表達式錯誤:堆棧耗盡。{{#expr: ( ) 1}}
= 表達式錯誤:預期外的數字。{{#expr: 2 d 1}}
= 表達式錯誤:無法識別詞語「d」。{{#expr: * 1}}
= 表達式錯誤:預期外的*運算符。{{#expr: -}}
= 表達式錯誤:缺少-的操作數。{{#expr: ( 1 ) )}}
= 表達式錯誤:預期外的反括號。{{#expr: 一}}
= 表達式錯誤:無法識別標點符號「一」。{{#expr: ( 1}}
= 表達式錯誤:未封閉的括號。{{#expr: 1 / 0}}
= 除以零。{{#expr:sqrt-1}}
= sqrt內:結果不是數字。{{#expr:ln0}}
= ln的參數無效:<= 0。{{#expr:asin-22}}
= asin的參數無效:< -1或> 1。
誤差
浮點誤差有可能造成某些運算的不可預料的結果,特別是最後幾位數字的不精確。因此在使用此函數進行實數運算時,注意不要進行比較運算。
注意內部數字表示
{{#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{{#expr: 2017.5000 round 3}}
= 2017.5:使用時會有無法補零的情形。欲補零,可以使用{{Round}}模板來解決
在返回值中,有可能出現無法再計算的數的情況,或者有一部分有效數字沒有顯示出來。因此在使用此函數進行運算時,須注意這些問題。
參見
- Template:復變運算:MediaWiki原生的運算功能僅支援實數的運算。若需要複數或復變數甚至四元數的計算可使用Template:復變運算模板,如上述示例中對負值取平方根時。
- Help:模板擴展語法