**提示**：此条目的主题不是**绝对赋值**。 

絕對值可視作該數與零之間的距離
在数学中，实数a的**绝对值**或**模**，记号为|a|，是指去掉a的符号所得的非负值。若a是正数，则{\displaystyle |a|=a}； 若a是负数（则-a是正数），则{\displaystyle |a|=-a}；零的绝对值为零（{\displaystyle |0|=0}）。例如，3和{\displaystyle -3}的绝对值都是3。绝对值可看作该数和零之间的距离。

绝对值的定义也可以从实数扩展到复数、四元数、有序环、域、向量空间等范围。在数学和物理中，绝对值与量、距离、范数等概念密切相关。

實數的絕對值
------

實數絕對值的平面座標圖
若實數 a \neq 0，則在兩個相互對稱的數 a 和 -a 中恰有一個數大於 0，這個大於 0 的數就稱為數 a 和數 -a 的**絕對值**，記為 \left|a\right|=\left|-a\right| ，0 的絕對值為 0 。
一個數的絕對值**最小值為0**，某數的絕對值表示為 | 某數 | 。對於所有實數 x ：若 x 是負數， |x|=-x （即是 -x 是一個正數）；若 x 非負， |x|=x 本身。即：

\left|a\right|={\begin{cases}a&(a>0)\\0&(a=0)\\-a&(a<0)\end{cases}}
一個數的絕對值可以視為該數在数線上的点和零的距離。例如 3 同時是 3 和 -3 的絕對值。

絕對值有以下性質：

1. |a|\geq 0
2. 若 a=0，|a|=0
3. |ab|=|a||b|
4. 若 b\neq 0，|{\frac {a}{b}}|={\frac {|a|}{|b|}}
5. |a+b|\leq |a|+|b| ( 見三角不等式 )
6. |a-b|\geq {\Big |}{\big |}a{\big |}-{\big |}b{\big |}{\Big |}
7. 若 a>0，則a=\left|a\right|；若a<0，則a=-\left|a\right|

複數的絕對值
------

複數的絕對值定義為：若z=a+ib，則 |z|={\sqrt {a^{2}+b^{2}}}={\sqrt {z{\bar {z}}}}（見平方根和共軛複數）。它符合以上的六項性質，但以下的三項就**不成立**：

1. \left|a\right|={\sqrt {a^{2}}}
2. |a|\leq b 若且唯若 -b\leq a\leq b
3. |a|\geq b 若且唯若 a\leq -b  **或**  b\leq a

但此時有

1. |{\bar {z}}|=|z|
2. {\sqrt {z{\bar {z}}}}=|z|

最後兩道式子常用於計算涉及複數絕對值的不等式。

有序環上的絕對值
--------

絕對值的定義可以照搬到有序環上。定義如下：

|a|={\begin{cases}a,&\;a\geq 0\\-a,&a<0,\end{cases}}
其中 -a 是 a 的加法反元素，而 0 是有序環的加法單位元素。

域上的絕對值
------

在抽象的域上，我們用絕對值的基本性質來推廣定義。一個域 F 上的**絕對值**是一個函數 |\cdot |:F\rightarrow {\mathbb {R}}，滿足以下四條公理:

|  |  |
| --- | --- |
| |a|\geq 0 | 非負性質 |
| |a|=0\iff a={\mathbf {0}} | 正定性質 |
| |ab|=|a|\cdot |b|\, | 積性 |
| |a+b|\leq |a|+|b| | 三角不等式 |

由以上公理可以導出 |1|=1。距離函數 d(x,y)=|x-y| 賦予 F 度量空間結構。

如果將定義中的三角不等式換作以下較強的形式（有時又叫做**強三角不等式**）

\forall a,b\in F\quad |a+b|\leq {\mathrm {max}}\{|a|,|b|\}
則稱 (F,|\cdot |)為超度量域，或稱絕對值 |\cdot | 不滿足**阿基米德性質**；反之則稱 |\cdot | 滿足阿基米德性質。。

超度量域的典型例子是 p進數域。一般來說，值群在 \mathbb {R}  裡的賦值環對應到超度量域，此時賦值與絕對值的關係由 |x|:=a^{{v(x)}} 給出，其中 {\displaystyle a\in [0,1]}；不同的 a 給出等價的拓撲結構。

微積分
---

絕對值函數在x=0不可導。

{\frac {d}{dx}}|x|={\frac {x}{|x|}}={\begin{cases}1&x>0\\-1&x<0\end{cases}}
\int |x|dx={\frac {x|x|}{2}}+C
其中C是積分常數。

演算法
---

C 語言關於絕對值的函數有： `abs()`, `labs()`, `llabs()`（在 C99 中），`fabs()`、`fabsf()` 與 `fabsl()` 函數計算一個對象的絕對值。當輸入值不是最大負整數時，很容易寫出計算絕對值的巨集或函數。

以下巨集可接受整數或浮點數：

```
#define abs(i) ((i)>0 ? (i) : (-i))

```

如果以函數計算，需要寫多個函數，多載來處理不同數據類型：

```
int abs (int);
float abs (float);
double abs (double);

int abs (int i) {
 if (i>0) {
 return i;
 } else {
 return -i;
 }
}

```

關於浮點數的絕對值演算法就要用點技巧，因為要為無窮大及 NaN（Not a Number）撰寫特別的程式碼。

在 Pascal、Fortran 和 Matlab 語言裡，取得絕對值的函數是 `abs`，可以計算整數、實數，以及複數。

如以組合語言撰寫，應有可能以三行指令在暫存器內完成絕對值的判斷與轉換演算法，以下例子是 x86 結構上的 32 位元暫存器，採英特爾語法。

````
cdq
xor eax, edx
sub eax, edx

````
`cdq` 指令將帶號位元（sign bit）的 `eax` 轉成 `edx`。如果 `eax` 是非負值，那 `edx` 變成 0，接下來的兩個指令會沒有影響，`eax` 將不變。如果 `eax` 是負數，那麼 `edx` 會變成 0xFFFFFFFF ，或是 -1。接下來的兩個指令會變成倒轉的二補數，並從 `eax`暫存器中取得負數的絕對值。

參考資料
----

1. ↑  Schechter, p 260-261.

* Nahin, Paul J.; *An Imaginary Tale* （页面存档备份，存于）; Princeton University Press; (hardcover, 1998). ISBN 0-691-02795-1
* O'Connor, J.J. and Robertson, E.F.; "Jean Robert Argand" （页面存档备份，存于）
* Schechter, Eric; *Handbook of Analysis and Its Foundations*, pp 259-263, "Absolute Values", Academic Press (1997) ISBN 0-12-622760-8
* 埃里克·韦斯坦因.. MathWorld.
* *absolute value* at PlanetMath.
* 微积分学教程，( 第一卷 ) ( 第 8 版 )，第 3 页，ISBN 5-9221-0436-5，*菲赫金哥尔茨* 著，*杨弢亮* 、*叶彦谦* 译，*郭思旭* 较，*高等教育出版社*