Help:计算:修订间差异

帮助页面
(创建页面,内容为“{{操作指南|shortcut1=H:CALC}}{{Other uses |subject = 關於僅需要使用簡單的'''實數運算'''的場合 |other = 需要使用到複數複變數四元數或特殊代數運算的場合 |Template:複變運算 }} 借助于Mediawiki的扩展“函数解析器”,进行计算变得可行。<tt>expr解析器</tt>函数可以用于计算代数表达式。语法为:{{Squote| :{{((}}#expr: ''表达式'' {…”)
 
(Chiyansama移動頁面Draft:计算Help:计算
 
(未显示同一用户的10个中间版本)
第1行: 第1行:
{{操作指南|shortcut1=H:CALC}}{{Other uses
{{操作指南|shortcut1=H:CALC}}
|subject = 關於僅需要使用簡單的'''[[實數]]運算'''的場合
|other = 需要使用到[[複數 (數學)|複數]]、[[複分析|複變數]]、[[四元數]]或特殊[[代數]]運算的場合
|Template:複變運算
}}
借助于Mediawiki的扩展“函数解析器”,进行计算变得可行。<tt>expr解析器</tt>函数可以用于计算代数表达式。语法为:{{Squote|
借助于Mediawiki的扩展“函数解析器”,进行计算变得可行。<tt>expr解析器</tt>函数可以用于计算代数表达式。语法为:{{Squote|
:{{((}}#expr: ''表达式'' {{))}}
:{{((}}#expr: ''表达式'' {{))}}
第59行: 第55行:


== 样例 ==
== 样例 ==
*<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}}:与数学表达式不同,“=”、“<”、“>”等运算符有返回值
第66行: 第62行:
*<code><nowiki>{{#expr: 999 * 999 round -2.9}}</nowiki></code> = {{#expr: 999 * 999 round -2.9}}:round的危险用法
*<code><nowiki>{{#expr: 999 * 999 round -2.9}}</nowiki></code> = {{#expr: 999 * 999 round -2.9}}:round的危险用法
*<code><nowiki>{{#expr: 1 or 1 and 0}}</nowiki></code> = {{#expr: 1 or 1 and 0}}:优先级演示
*<code><nowiki>{{#expr: 1 or 1 and 0}}</nowiki></code> = {{#expr: 1 or 1 and 0}}:优先级演示
*<code><nowiki>{{#expr: 10.9 mod 2}}</nowiki></code> = {{#expr: 10.9 mod 2}}:[[同餘|mod]]的危险用法
*<code><nowiki>{{#expr: 10.9 mod 2}}</nowiki></code> = {{#expr: 10.9 mod 2}}:mod的危险用法
*<code><nowiki>{{#expr: 30------7}}</nowiki></code> = {{#expr: 30-----7}}
*<code><nowiki>{{#expr: 30------7}}</nowiki></code> = {{#expr: 30-----7}}
*<code><nowiki>{{#expr: 30+++++7}}</nowiki></code> = {{#expr: 30+++++7}}:“+”、“-”运算符有两种含义
*<code><nowiki>{{#expr: 30+++++7}}</nowiki></code> = {{#expr: 30+++++7}}:“+”、“-”运算符有两种含义
*<code><nowiki>{{#expr: .}}</nowiki></code> = {{#expr: .}}
*<code><nowiki>{{#expr: .}}</nowiki></code> = {{#expr: .}}
*<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|根號模板]](詳見[[Template:複變運算]])
*<code><nowiki>{{複變運算|(-1)^0.5}}</nowiki></code> = {{複變運算|(-1)^0.5}}:使用[[Template:複變運算|複變運算模板]]
*<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)}}:對比使用普通運算功能的[[歐拉恆等式]]


== 詳細運算子、函、常數說明 ==
== 详细运算子、函、常数说明 ==
{| class="wikitable sortable"
{| class="wikitable sortable"
! ''表式''
! ''表式''
! ''<abbr title="參數數量">參數</abbr>''
! ''<abbr title="参数数量">参数</abbr>''
! ''算子''
! ''算子''
! ''PHP''
! ''PHP''
! ''料型''
! ''料型''
! ''<abbr title="算子序"></abbr>''
! ''<abbr title="算子序"></abbr>''
! ''例''
! ''例''
|-
|-
| {{anchor|一元|負號}}</code>'''-'''</code> || 1
| {{anchor|一元|负号}}</code>'''-'''</code> || 1
| [[一元運算#一元負數和正數|一元 '''<tt>-</tt>''' 符號]]負號
| |一元 '''<tt>-</tt>''' 符负号
| [http://php.net/manual/en/language.operators.arithmetic.php -] || 與參數相同 || {{nts|10}} ||
| [http://php.net/manual/en/language.operators.arithmetic.php -] || 与参数相同 || {{nts|10}} ||
{| class="wikitable"
{| class="wikitable"
{{xpettu|-|12}}
{{xpettu|-|12}}
第98行: 第90行:
|}
|}
|-
|-
| {{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}}
| {{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行: 第104行:
|}
|}


錯誤範例:
错误范例:
{| class="wikitable"
{| class="wikitable"
|{{xpett|e4}}
|{{xpett|e4}}
第119行: 第111行:
|-
|-
| '''<code>exp</code>''' || 1
| '''<code>exp</code>''' || 1
| [[指数函数|自然指數函數 e<sup>x</sup>]]
| [自然指数函数 e<sup>x</sup>
| [http://php.net/manual/en/function.exp.php exp] || 浮點數 || {{nts|9}} ||
| [http://php.net/manual/en/function.exp.php exp] || 浮点数 || {{nts|9}} ||
{| class="wikitable"
{| class="wikitable"
{{xpettu|exp|43}}
{{xpettu|exp|43}}
第128行: 第120行:
|}
|}


:
:
{| class="wikitable"
{| class="wikitable"
|{{xpett|e^43}}
|{{xpett|e^43}}
第138行: 第130行:
|-
|-
| '''<code>ln</code>''' || 1
| '''<code>ln</code>''' || 1
| [[自然對數]]
| 自然对数
| [http://php.net/manual/en/function.log.php <sup>log</sup>] || 浮點數 || {{nts|9}} ||
| [http://php.net/manual/en/function.log.php <sup>log</sup>] || 浮点数 || {{nts|9}} ||
{| class="wikitable"
{| class="wikitable"
{{xpettu|ln|2}}
{{xpettu|ln|2}}
第146行: 第138行:
{{xpettu|ln|.5e-323}}
{{xpettu|ln|.5e-323}}
|}
|}
可用底公式轉換為常用對數,例如 log 2 ≒ 0.3010:
可用底公式转换為常用对数,例如 log 2 ≒ 0.3010:
{| class="wikitable"
{| class="wikitable"
|{{xpett|ln2/ln10}}
|{{xpett|ln2/ln10}}
第153行: 第145行:
|-
|-
| '''<code>abs</code>''' || 1
| '''<code>abs</code>''' || 1
| [[絕對]]
|绝对
| [http://php.net/manual/en/function.abs.php abs] || 同於入值,且非 || {{nts|9}} ||
| [http://php.net/manual/en/function.abs.php abs] || 同於入值,且非 || {{nts|9}} ||
{| class="wikitable"
{| class="wikitable"
{{xpettu|abs|-2}}
{{xpettu|abs|-2}}
第162行: 第154行:
|-
|-
| '''<code>sqrt</code>''' || 1
| '''<code>sqrt</code>''' || 1
| [[平方根]]
|平方根
| [http://php.net/manual/en/function.sqrt.php sqrt] || 浮點數 || {{nts|9}} ||
| [http://php.net/manual/en/function.sqrt.php sqrt] || 浮点数 || {{nts|9}} ||
{| class="wikitable"
{| class="wikitable"
{{xpettu|sqrt| 4}}
{{xpettu|sqrt| 4}}
第169行: 第161行:
{{xpettu|sqrt| 1e19}}
{{xpettu|sqrt| 1e19}}
|}
|}
此平方根果為[[虛數]][[複數 (數學)|複數]]的情<br>即對負行平方根會發錯誤
此平方根果為虚数复数的情<br>即对负行平方根会发错误
{| class="wikitable"
{| class="wikitable"
{{xpettu|sqrt|-1}}
{{xpettu|sqrt|-1}}
第175行: 第167行:
|-
|-
| '''<code>trunc</code>''' || 1
| '''<code>trunc</code>''' || 1
| [[截尾函數]]
| 截尾函
| [http://php.net/manual/en/language.types.integer.php#language.types.integer.casting (int)], 即[[类型转换|轉換]]為[[數]] || 整 || {{nts|9}} ||
| [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}}
第189行: 第181行:
|-
|-
| '''<code>floor</code>''' || 1
| '''<code>floor</code>''' || 1
| [[取整函数|向下取整函数]]
|向下取整函数
| [http://php.net/manual/en/function.floor.php floor] || 浮點數 || {{nts|9}} ||
| [http://php.net/manual/en/function.floor.php floor] || 浮点数 || {{nts|9}} ||
{| class="wikitable"
{| class="wikitable"
{{xpettu|floor|1.2}}
{{xpettu|floor|1.2}}
第198行: 第190行:
|-
|-
| '''<code>ceil</code>''' || 1
| '''<code>ceil</code>''' || 1
| [[取整函数|向上取整函数]]
|向上取整函数
| [http://php.net/manual/en/function.ceil.php ceil] || 浮點數 || {{nts|9}} ||
| [http://php.net/manual/en/function.ceil.php ceil] || 浮点数 || {{nts|9}} ||
{| class="wikitable"
{| class="wikitable"
{{xpettu|ceil|1.2}}
{{xpettu|ceil|1.2}}
第207行: 第199行:
|-
|-
| '''<code>sin</code>''' || 1
| '''<code>sin</code>''' || 1
| [[正弦函數]]
|正弦函
| [http://php.net/manual/en/function.sin.php sin] || 浮點數 || {{nts|9}} ||
| [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行: 第212行:
|-
|-
| '''<code>cos</code>''' || 1
| '''<code>cos</code>''' || 1
| [[餘弦函數]]
|餘弦函
| [http://php.net/manual/en/function.cos.php cos] || 浮點數 || {{nts|9}} ||
| [http://php.net/manual/en/function.cos.php cos] || 浮点数 || {{nts|9}} ||
{| class="wikitable"
{| class="wikitable"
{{xpettu|cos|.1}}
{{xpettu|cos|.1}}
第228行: 第220行:
|-
|-
| '''<code>tan</code>''' || 1
| '''<code>tan</code>''' || 1
| [[正切函數]]
|正切函
| [http://php.net/manual/en/function.tan.php tan] || 浮點數 || {{nts|9}} ||
| [http://php.net/manual/en/function.tan.php tan] || 浮点数 || {{nts|9}} ||
{| class="wikitable"
{| class="wikitable"
{{xpettu|tan|.1}}
{{xpettu|tan|.1}}
第236行: 第228行:
|-
|-
| '''<code>asin</code>''' || 1
| '''<code>asin</code>''' || 1
| [[反正弦]]
|反正弦
| [http://php.net/manual/en/function.asin.php asin] || 浮點數 || {{nts|9}} ||
| [http://php.net/manual/en/function.asin.php asin] || 浮点数 || {{nts|9}} ||
{| class="wikitable"
{| class="wikitable"
{{xpettu|asin|.1}}
{{xpettu|asin|.1}}
第244行: 第236行:
|-
|-
| '''<code>acos</code>''' || 1
| '''<code>acos</code>''' || 1
| [[反餘弦]]
|反餘弦
| [http://php.net/manual/en/function.acos.php acos] || 浮點數 || {{nts|9}} ||
| [http://php.net/manual/en/function.acos.php acos] || 浮点数 || {{nts|9}} ||
{| class="wikitable"
{| class="wikitable"
{{xpettu|acos|.1}}
{{xpettu|acos|.1}}
第253行: 第245行:
|-
|-
| '''<code>atan</code>''' || 1
| '''<code>atan</code>''' || 1
| [[反正切]]
|反正切
| [http://php.net/manual/en/function.atan.php atan] || 浮點數 || {{nts|9}} ||
| [http://php.net/manual/en/function.atan.php atan] || 浮点数 || {{nts|9}} ||
{| class="wikitable"
{| class="wikitable"
{{xpettu|atan|.1}}
{{xpettu|atan|.1}}
第262行: 第254行:
|-
|-
| '''<code>not</code>''' || 1
| '''<code>not</code>''' || 1
| [[逻辑非]]
|逻辑非
| [http://www.php.net/manual/en/language.operators.logical.php !] || 以整<br>的[[布林值]]<br> (1 或 0) || {{nts|9}} ||
| [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行: 第264行:
|-
|-
| '''<code>^</code>''' || 2
| '''<code>^</code>''' || 2
| [[冪]][[數]]
| (指
| [http://php.net/manual/en/function.pow.php pow] || 原上為浮點數。若底為整且指為非數則為整 || {{nts|8}} ||
| [http://php.net/manual/en/function.pow.php pow] || 原上為浮点数。若底為整且指為非数则為整 || {{nts|8}} ||
{| class="wikitable"
{| class="wikitable"
{{xpettb|2|^|3}}
{{xpettb|2|^|3}}
第287行: 第279行:
|-
|-
| '''<code>*</code>''' || 2
| '''<code>*</code>''' || 2
| [[乘法]]
| 乘法
| [http://php.net/manual/en/language.operators.arithmetic.php *] || 若兩參數為整為整,否為浮點數 || {{nts|7}} ||
| [http://php.net/manual/en/language.operators.arithmetic.php *] || 若两参数為整為整,否為浮点数 || {{nts|7}} ||
{| class="wikitable"
{| class="wikitable"
{{xpettb|2|*|3}}
{{xpettb|2|*|3}}
第297行: 第289行:
|}
|}
|-
|-
| '''<code>/</code>''' (或作'''div''') || 2
| '''<code>/</code>''' (或作'''div''') || 2
|| [[除法]] <br>(div非整除法<ref name="divmod">'''<code>div</code>'''及'''<code>mod</code>''' 在几乎所有编程语言中都不同。</ref>)
|| 除法 <br>(div非整除法<ref name="divmod">'''<code>div</code>'''及'''<code>mod</code>''' 在几乎所有编程语言中都不同。</ref>)
| [http://php.net/manual/en/language.operators.arithmetic.php /] || 原上為浮點數。若兩參數皆為整[[整除]]則為整 || {{nts|7}} ||
| [http://php.net/manual/en/language.operators.arithmetic.php /] || 原上為浮点数。若两参数皆為整且整除為整 || {{nts|7}} ||
{| class="wikitable"
{| class="wikitable"
{{xpettb|6|/|3}}
{{xpettb|6|/|3}}
第309行: 第301行:
|-
|-
| '''<code>mod</code>''' || 2
| '''<code>mod</code>''' || 2
| [[模除]][[帶餘除法]]<br>時會將後兩數截<br>成整。<ref name="divmod"/>
| 模除。 餘除法<br>时会将后两数截<br>成整。<ref name="divmod"/>
| [http://php.net/manual/en/language.operators.arithmetic.php %] || 整 || {{nts|7}} ||
| [http://php.net/manual/en/language.operators.arithmetic.php %] || 整 || {{nts|7}} ||
{| class="wikitable"
{| class="wikitable"
{{xpettb|30|mod|7}}
{{xpettb|30|mod|7}}
第319行: 第311行:
|}
|}


部分[[數]]無法取餘[[#Limitations and workarounds|限制章]]):
部分除数无法取餘[[#Limitations and workarounds|限制章]]):
{| class="wikitable"
{| class="wikitable"
{{xpettb|123|mod|2^64}}
{{xpettb|123|mod|2^64}}
第325行: 第317行:
|-
|-
| '''<code>fmod</code>''' || 2
| '''<code>fmod</code>''' || 2
| [[模除]],浮點數版本。<br>返回去第二參數之整<br>倍的第一參數
| 模除,浮点数版本。<br>返回去第二参数之整<br>倍的第一参数
| [https://www.php.net/manual/en/function.fmod.php fmod] || 浮點數|| {{nts|7}} ||
| [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}}
第337行: 第329行:
|-
|-
| '''<code>+</code>''' || 2
| '''<code>+</code>''' || 2
|| [[加法]]
|| 加法
| [http://php.net/manual/en/language.operators.arithmetic.php +] || 若兩參數皆為整數則為整,其餘浮點數 || {{nts|6}} ||
| [http://php.net/manual/en/language.operators.arithmetic.php +] || 若两参数皆為整数则為整,其餘浮点数 || {{nts|6}} ||
{| class="wikitable"
{| class="wikitable"
{{xpettb|2|+|3}}
{{xpettb|2|+|3}}
第348行: 第340行:
|-
|-
| '''<code>-</code>''' || 2
| '''<code>-</code>''' || 2
|| [[減]]
||
| [http://php.net/manual/en/language.operators.arithmetic.php -] || 若兩參數皆為整數則為整,其餘浮點數 || {{nts|6}} ||
| [http://php.net/manual/en/language.operators.arithmetic.php -] || 若两参数皆為整数则為整,其餘浮点数 || {{nts|6}} ||
{| class="wikitable"
{| class="wikitable"
{{xpettb|3|-|2}}
{{xpettb|3|-|2}}
第359行: 第351行:
|-
|-
| '''<code>round</code>''' || 2
| '''<code>round</code>''' || 2
|| 指定的小<br>做[[数值修约|四捨五入]],若為<br>則會對<br>為做四捨五入。
|| 指定的小<br>做四捨五入,若為<br>则会对<br>為做四捨五入。
| [http://php.net/manual/en/function.round.php round] || 浮點數 || {{nts|5}} ||
| [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行: 第363行:
|-
|-
| '''<code>=</code>''' || 2
| '''<code>=</code>''' || 2
|| [[相等]]字或邏輯的<br>相等算,不支援<br>字串比
|| 相等(字或逻辑的<br>相等算,不支援<br>字串比
| [http://php.net/manual/en/language.operators.comparison.php ==] || 以整<br>的[[布林值]]<br> (1 或 0) || {{nts|4}} ||
| [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行: 第375行:
|}
|}


錯誤用法:
错误用法:
{| class="wikitable"
{| class="wikitable"
|{{xpett|a{{=}}a}}
|{{xpett|a{{=}}a}}
第392行: 第384行:
|-
|-
| '''<code>&lt;</code>''' || 2
| '''<code>&lt;</code>''' || 2
|| [[不等|小於]](不用於字串<br>比
|| 小於(不用於字串<br>比
| [http://php.net/manual/en/language.operators.comparison.php <] || 以整<br>的[[布林值]]<br> (1 或 0) || {{nts|4}} ||
| [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行: 第402行:
|-
|-
| '''<code>&gt;</code>''' || 2
| '''<code>&gt;</code>''' || 2
|| [[不等|大於]]當參數顛<br> < 相同)
|| 大於(当参数颠<br> < 相同)
| [http://php.net/manual/en/language.operators.comparison.php >] || 以整<br>的[[布林值]]<br> (1 或 0) || {{nts|4}} ||
| [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行: 第410行:
|-
|-
| '''<code>&lt;=</code>''' || 2
| '''<code>&lt;=</code>''' || 2
|| [[不等|小於等於]]當參數<br>時與 >= 相同)
|| 小於等於(当参数<br>时与 >= 相同)
| [http://php.net/manual/en/language.operators.comparison.php <=] || 以整<br>的[[布林值]]<br> (1 或 0) || {{nts|4}} ||
| [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}}
第426行: 第418行:
|-
|-
| '''<code>&gt;=</code>''' || 2
| '''<code>&gt;=</code>''' || 2
| [[不等|大於等於]](<的否定)
| 大於等於(<的否定)
| [http://php.net/manual/en/language.operators.logical.php >=] || 以整<br>的[[布林值]]<br> (1 或 0) || {{nts|4}} ||
| [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}}
第434行: 第426行:
|-
|-
| '''<code>and</code>''' || 2
| '''<code>and</code>''' || 2
| [[逻辑与]]
| 逻辑与
| [http://php.net/manual/en/language.operators.logical.php &&] || 以整<br>的[[布林值]]<br> (1 或 0) || {{nts|3}} ||
| [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}}
第444行: 第436行:
|-
|-
| '''<code>or</code>''' || 2
| '''<code>or</code>''' || 2
| [[逻辑或]]
| 逻辑或
| [http://php.net/manual/en/language.operators.logical.php <nowiki>||</nowiki>] || 以整<br>的[[布林值]]<br> (1 或 0) || {{nts|2}} ||
| [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行: 第445行:
|}
|}
|-
|-
| {{anchor|一元加|正}}'''<code>+</code>''' || 1
| {{anchor|一元加|正}}'''<code>+</code>''' || 1
| [[一元運算#一元負數和正數|一元 '''<tt>+</tt></code>''' 符號]] (正
| 一元 '''<tt>+</tt></code>''' 符 (正
| (不用) || 與參數相同 || 不用 ||
| (不用) || 与参数相同 || 不用 ||
{| class="wikitable"
{| class="wikitable"
{{xpettu|+|1}}
{{xpettu|+|1}}
第462行: 第454行:
|}
|}
|-
|-
| {{nowrap|(字)}} || 0
| {{nowrap|(字)}} || 0
| 普通十制的<br>字([[#正號|一元加]][[#負號|減]] [[#科學記號|e]]<br>被算符,<br>參見本表的其他地方) || [http://nl.php.net/manual/en/function.floatval.php floatval] || 浮點數 || 不
| 普通十制的<br>字(一元加和e]]<br>被算符,<br>参见本表的其他地方) || [http://nl.php.net/manual/en/function.floatval.php floatval] || 浮点数 || 不
|
|
{| class="wikitable"
{| class="wikitable"
第473行: 第465行:
|}
|}
|-
|-
| '''<code>e</code>'''作為<br>子表式 || 0
| '''<code>e</code>'''作為<br>子表式 || 0
| 數學數[[e (數學常數)|e]] || [http://php.net/manual/en/function.exp.php exp](1) || 浮點數 || 不
| 数学e || [http://php.net/manual/en/function.exp.php exp](1) || 浮点数 || 不
|
|
{| class="wikitable"
{| class="wikitable"
第482行: 第474行:
|-
|-
| '''<code>pi</code>''' || 0
| '''<code>pi</code>''' || 0
| 數學數[[圓周率]] [[圓周率|π]] || [http://php.net/manual/en/function.pi.php pi] || 浮點數 || 不
| 数学数圆周率 π]] || [http://php.net/manual/en/function.pi.php pi] || 浮点数 || 不
|
|
{| class="wikitable"
{| class="wikitable"
第502行: 第494行:
*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行: 第503行:
*<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: }}</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: 1 / 0}}</nowiki></code> = {{#expr: 1 / 0}}
*<code><nowiki>{{#expr: 1 / 0}}</nowiki></code> = {{#expr: 1 / 0}}
第519行: 第511行:


== 误差 ==
== 误差 ==
[[浮点]][[误差]]有可能造成某些运算的不可预料的结果,特别是最后几位数字的不精确。因此在使用此函数进行[[实数]]运算时,注意不要进行比较运算。
浮点误差有可能造成某些运算的不可预料的结果,特别是最后几位数字的不精确。因此在使用此函数进行实数运算时,注意不要进行比较运算。


== 注意内部数字表示 ==
== 注意内部数字表示 ==
第526行: 第518行:
*<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}}:使用時會零的情形。欲零,可以使用{{tl|Round}}模板
*<code><nowiki>{{#expr: 2017.5000 round 3}}</nowiki></code> = {{#expr: 2017.5000 round 3}}:使用时会零的情形。欲零,可以使用{{tl|Round}}模板
在返回值中,有可能出现无法'''再计算'''的数的情况,或者有一部分[[有效数字]]没有显示出来。因此在使用此函数进行运算时,须注意这些问题。
在返回值中,有可能出现无法'''再计算'''的数的情况,或者有一部分有效数字没有显示出来。因此在使用此函数进行运算时,须注意这些问题。

== 参见 ==
*[[Template:複變運算]]:MediaWiki原生的運算功能僅支援[[實數]]的運算。若需要[[複數 (數學)|複數]]或[[複分析|複變數]]甚至[[四元數]]的計算可使用[[Template:複變運算]]模板,如上述示例中對負值取平方根時。
*[[Help:模板扩展语法]]


== 注释 ==
== 注释 ==
[[Category:基百科文字助文|JS]]
[[Category:基百科文字助文|JS]]
{{reflist}}{{-}}{{帮助页面}}
{{reflist}}{{-}}{{帮助页面}}

2023年7月20日 (四) 17:41的最新版本

借助于Mediawiki的扩展“函数解析器”,进行计算变得可行。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: 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:无法对虚数单位进行计算

详细运算子、函数、常数说明

表达式 参数 运算子 PHP 资料型态 优先级 范例
- 1 一元 - 符号 (负号) - 与参数相同
{{#expr:-12}} -12
{{#expr:-trunc12}} -12
{{#expr:-trunc(-2^63)}} 9.2233720368548E+18
e
(位于子表达式之间)
2 *10^
以10为底的指数
科学记号
* pow (10,..) 浮点数,除非左边的参数是整数且指数是非负整数
{{#expr:2e3}} 2000
{{#expr:-2.3e-4}} -0.00023
{{#expr:(trunc2)e(trunc-3)}} 0.002
{{#expr:(trunc2)e(trunc0)}} 2
{{#expr:(trunc2)e(trunc18)}} 2000000000000000000
{{#expr:(trunc2)e(trunc19)}} 2.0E+19
{{#expr:6e(5-2)e-2}} 60
{{#expr:1e.5}} 3.1622776601684

错误范例:

{{#expr:e4}} 表达式错误:预期外的数字。
exp 1 [自然指数函数 ex exp 浮点数
{{#expr:exp43}} 4.7278394682293E+18
{{#expr:exp trunc0}} 1
{{#expr:exp709}} 8.218407461555E+307
{{#expr:exp-744}} 9.8813129168249E-324

比较:

{{#expr:e^43}} 4.7278394682293E+18
{{#expr:trunc exp43}} 4727839468229346304
ln 1 自然对数 log 浮点数
{{#expr:ln2}} 0.69314718055995
{{#expr:ln trunc1}} 0
{{#expr:ln8.9e307}} 709.07967482591
{{#expr:ln.5e-323}} -744.44007192138

可用换底公式转换为常用对数,例如 log 2 ≒ 0.3010:

{{#expr:ln2/ln10}} 0.30102999566398
abs 1 绝对值 abs 同于输入值,并且非负
{{#expr:abs-2}} 2
{{#expr:abs trunc-2}} 2
{{#expr:abs trunc-2^63}} 9.2233720368548E+18
sqrt 1 平方根 sqrt 浮点数
{{#expr:sqrt 4}} 2
{{#expr:sqrt 2}} 1.4142135623731
{{#expr:sqrt 1e19}} 3162277660.1684

此平方根计算无法处理结果为虚数或复数的情况
即对负值进行平方根会发生错误:

{{#expr:sqrt-1}} sqrt内:结果不是数字。
trunc 1 截尾函数 (int), 即转换型态]]为整数 整数
{{#expr:trunc1.2}} 1
{{#expr:trunc1.8}} 1
{{#expr:trunc-1.2}} -1
{{#expr:trunc(-2^64+1e5)}} 98304
{{#expr:trunc(-2^63+1e5)}} -9223372036854675456
{{#expr:trunc(2^63)}} -9223372036854775808
{{#expr:trunc(2^63+1e5)}} -9223372036854675456
{{#expr:trunc(2^64+1e5)}} 98304
floor 1 向下取整函数 floor 浮点数
{{#expr:floor1.2}} 1
{{#expr:floor-1.2}} -2
{{#expr:floor trunc3}} 3
ceil 1 向上取整函数 ceil 浮点数
{{#expr:ceil1.2}} 2
{{#expr:ceil-1.2}} -1
{{#expr:ceil trunc3}} 3
sin 1 正弦函数 sin 浮点数
{{#expr:sin.1}} 0.099833416646828
{{#expr:sin trunc1}} 0.8414709848079

若要使用角度(如30°)可表达为:

{{#expr:sin(30*pi/180)}} 0.5
cos 1 余弦函数 cos 浮点数
{{#expr:cos.1}} 0.99500416527803
{{#expr:cos trunc1}} 0.54030230586814
tan 1 正切函数 tan 浮点数
{{#expr:tan.1}} 0.10033467208545
{{#expr:tan trunc1}} 1.5574077246549
asin 1 反正弦 asin 浮点数
{{#expr:asin.1}} 0.10016742116156
{{#expr:asin trunc1}} 1.5707963267949
acos 1 反余弦 acos 浮点数
{{#expr:acos.1}} 1.4706289056333
{{#expr:acos trunc1}} 0
{{#expr:2*acos 0}} 3.1415926535898
atan 1 反正切 atan 浮点数
{{#expr:atan.1}} 0.099668652491162
{{#expr:atan trunc1}} 0.78539816339745
{{#expr:4*atan 1}} 3.1415926535898
not 1 逻辑非 ! 以整数表达
的布林值
(1 或 0)
{{#expr:not0}} 1
{{#expr:not1}} 0
{{#expr:not2}} 0
{{#expr:not trunc1}} 0
^ 2 幂 (指数) pow 原则上为浮点数。若底数为整数且指数为非负整数则为整数
{{#expr:2^3}} 8
{{#expr:-2^3}} -8
{{#expr:-2^4}} 16
{{#expr:(trunc2)^(trunc-3)}} 0.125
{{#expr:(trunc2)^(trunc0)}} 1
{{#expr:(trunc2)^(trunc62)}} 4611686018427387904
{{#expr:(trunc2)^(trunc63)}} 9.2233720368548E+18
{{#expr:(-2)^1.2}} NAN
{{#expr:(-2)^.5}} NAN
* 2 乘法 * 若两参数为整数,则为整数,否则为浮点数
{{#expr:2*3}} 6
{{#expr:(trunc2)*3}} 6
{{#expr:2*trunc3}} 6
{{#expr:(trunc2)*trunc3}} 6
{{#expr:(trunc1e10)*trunc1e9}} 1.0E+19
/ (或写作div 2 除法
(div非整数除法[1]
/ 原则上为浮点数。若两参数皆为整数且整除则为整数
{{#expr:6/3}} 2
{{#expr:(trunc6)/3}} 2
{{#expr:2/trunc6}} 0.33333333333333
{{#expr:(trunc6)/trunc3}} 2
{{#expr:(trunc6)/trunc4}} 1.5
mod 2 模除。 实行带余除法
时会将前后两数截
成整数。[1]
% 整数
{{#expr:30mod7}} 2
{{#expr:-30mod7}} -2
{{#expr:30mod-7}} 2
{{#expr:-30mod-7}} -2
{{#expr:30.5mod7.9}} 2

部分除数无法取余数 (见限制章节):

{{#expr:123mod2^64}} 除以零。
fmod 2 模除,浮点数版本。
返回减去第二参数之整数
倍的第一参数。
fmod 浮点数
{{#expr:5.7fmod1.3}} 0.5
{{#expr:99.9fmod60}} 39.9
{{#expr:2.99fmod1}} 0.99
{{#expr:-2.99fmod1}} -0.99
{{#expr:2.99fmod-1}} 0.99
{{#expr:-2.99fmod-1}} -0.99
+ 2 加法 + 若两参数皆为整数则为整数,其余浮点数
{{#expr:2+3}} 5
{{#expr:(trunc2)+3}} 5
{{#expr:2+trunc3}} 5
{{#expr:(trunc2)+trunc3}} 5
{{#expr:(trunc7e18)+trunc4e18}} 1.1E+19
- 2 减法 - 若两参数皆为整数则为整数,其余浮点数
{{#expr:3-2}} 1
{{#expr:(trunc3)-2}} 1
{{#expr:2-trunc2}} 0
{{#expr:(trunc3)-trunc2}} 1
{{#expr:(trunc-7e18)-trunc4e18}} -1.1E+19
round 2 将指定的小数位数
做四舍五入,若为
负值则会对指数
为数做四舍五入。
round 浮点数
{{#expr:9.876round2}} 9.88
{{#expr:(trunc1234)round trunc-2}} 1200
{{#expr:4.5round0}} 5
{{#expr:-4.5round0}} -5
{{#expr:46.857round1.8}} 46.9
{{#expr:46.857round-1.8}} 50
= 2 相等(数字或逻辑的
相等运算,不支援
字串比对)
== 以整数表达
的布林值
(1 或 0)
{{#expr:3.0=3}} 1
{{#expr:3.1=3}} 0
{{#expr:3.0=trunc3}} 1
{{#expr:3.1=trunc3}} 0
{{#expr:1e16=trunc(1e16)}} 1
{{#expr:1e16=trunc(1e16)+trunc1}} 1
{{#expr:trunc(1e16)=trunc(1e16)+trunc1}} 0

错误用法:

{{#expr:a=a}} 表达式错误:无法识别词语“a”。
< 2 小于(不适用于字串
比较)
< 以整数表达
的布林值
(1 或 0)
{{#expr:3<3}} 0
{{#expr:3<4}} 1
{{#expr:2.9<3}} 1
{{#expr:3.0<3}} 0
{{#expr:2.9<trunc3}} 1
{{#expr:3.0<trunc3}} 0
{{#expr:1e16<trunc(1e16)+trunc1}} 0

wrong:

{{#expr:a<b}} 表达式错误:无法识别词语“a”。
> 2 大于(当参数颠倒时
与 < 相同)
> 以整数表达
的布林值
(1 或 0)
{{#expr:4>3}} 1
{{#expr:3>3}} 0
<= 2 小于等于(当参数
颠倒时与 >= 相同)
<= 以整数表达
的布林值
(1 或 0)
{{#expr:3<=4}} 1
{{#expr:3<=3}} 1
>= 2 大于等于(<的否定) >= 以整数表达
的布林值
(1 或 0)
{{#expr:4>=3}} 1
{{#expr:3>=3}} 1
and 2 逻辑与 && 以整数表达
的布林值
(1 或 0)
{{#expr:3and4}} 1
{{#expr:-3and0}} 0
{{#expr:0and4}} 0
{{#expr:0and0}} 0
or 2 逻辑或 || 以整数表达
的布林值
(1 或 0)
{{#expr:3or4}} 1
{{#expr:-3or0}} 1
{{#expr:0or4}} 1
{{#expr:0or0}} 0
+ 1 一元 + 符号 (正号) (不适用) 与参数相同 不适用
{{#expr:+1}} 1
{{#expr:+-1}} -1
{{#expr:+trunc1}} 1
(数字) 0 普通十进制的无符号
数字(一元加减和e]]
被视为运算符,请
参见本表的其他地方)
floatval 浮点数 不适用
{{#expr:1234567890123456789}} 1.2345678901235E+18
{{#expr:123456789.0123456789}} 123456789.01235
e作为
子表达式
0 数学常数e exp(1) 浮点数 不适用
{{#expr:e}} 2.718281828459
pi 0 数学常数圆周率 π]] pi 浮点数 不适用
{{#expr:pi}} 3.1415926535898

错误

此函数进行错误检查并给出信息。

  • 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}}模板来解决

在返回值中,有可能出现无法再计算的数的情况,或者有一部分有效数字没有显示出来。因此在使用此函数进行运算时,须注意这些问题。

注释

  1. 1.0 1.1 divmod 在几乎所有编程语言中都不同。