'''精度'''(せいど、precision)とは、数値を表現する桁数を意味する。
== 概要 ==
科学的には、全桁数を意味することが多いが('''[[有効数字]]'''とも呼ぶ)、小数点以下の桁数を意味することもある。工学や金融などでは小数点以下の値が重要な意味を持つため、後者の定義が便利である。
いずれにしても、精度とは不正確な測定結果をどこで丸めるかを示すものである。例えば、[[浮動小数点数]]の算術では演算結果は「仮数」の長さという所定の精度で丸められる。金融計算では数値はある一定の桁数で丸められる(例えば、国際通貨の為替レートは一般に小数点以下2桁で丸められる)。
ここでは、例として[[十進記数法|十進数]]の値 12.345 を様々な精度で丸めるとどうなるかを示す。精度が不十分であれば、[[端数処理]]によってその精度に見合った桁数で数値が丸められる。下の表は最も一般的な[[四捨五入]]で丸めを行った場合を示している。
{| class="wikitable"
|-
! 精度 !! 有効桁数での丸め !! 小数点以下での丸め
|-
| 5桁 || 12.345 || 12.34500
|-
| 4桁 || 12.35 || 12.3450
|-
| 3桁 || 12.4 || 12.345
|-
| 2桁 || 12 || 12.35
|-
| 1桁 || 1E+1 <ref group="*">1E+1 とは 1 × 10<sup>+1</sup> を意味する。</ref> || 12.4
|-
| 0桁 || n/a || 12
|}
<div class="references-small"><references group="*" /></div>
== 丸め誤差 ==
'''丸め誤差'''とは、計算で求められる数値の[[近似]]と数学的に正確な値との差である。[[数値解析]]では、近似[[方程式]]や近似[[アルゴリズム]]を使用したときの丸め誤差を予測しようとしてきた。特に有限の精度で実数を表現する際などである。丸め誤差は一種の[[量子化誤差]]である。
=== 例 ===
{| class="wikitable"
! 表記 !! 実際の値 !! 近似値 !! 誤差
|-
| 1/7
| 0.<span style=text-decoration:overline>142 857</span>
| 0.142 857
| 1/7 000 000
|-
| [[自然対数|ln 2]]
| 0.693 147 180 559 945 309 41...
| 0.693 147
| 0.000 000 180 559 945 309 41...
|-
| [[対数|log<sub>10</sub> 2]]
| 0.301 029 995 663 981 195 21...
| 0.3010
| 0.000 029 995 663 981 195 21...
|-
| <math>\sqrt[3]{2}</math>([[立方根]])
| 1.259 921 049 894 873 164 76...
| 1.25992
| 0.000 001 049 894 873 164 76...
|-
| <math>\sqrt{2}</math>([[平方根]])
| 1.414 213 562 373 095 048 80...
| 1.41421
| 0.000 003 562 373 095 048 80...
|-
| [[ネイピア数|e]]
| 2.718 281 828 459 045 235 36...
| 2.718 281 828 459 045
| 0.000 000 000 000 000 235 36...
|-
| [[円周率|π]]
| 3.141 592 653 589 793 238 46...
| 3.141 592 653 589 793
| 0.000 000 000 000 000 238 46...
|}
桁数が増えると丸め誤差の影響も小さくなるが、桁数に制限がある限り、[[可算無限集合]]でない実数では何らかの丸め誤差は避けられない。この種の誤差は通常の数値表現では回避できない。
有限精度で数値を表す際の処理方法については[[端数処理]]を参照されたい。
== 情報工学における精度 ==
[[情報工学]]における数値の'''精度'''とは、その数値を表現する項目の単位である。一般にビット数で表されるが、十進の桁数で表すこともある。
[[Java]]は[[データ型]]の精度を定めている数少ない[[プログラミング言語]]の1つであるが、下の表はその標準整数型の精度の定義を示したものである。表に示された範囲は[[2の補数]]表現で符号付整数を表した場合の範囲である。
{| class="wikitable"
|+ Java言語のデータ型の精度
|-
! 型 !! 精度(二進ビット数) !! 範囲
|-
| <code>byte</code>
| 8
| -128 から +127
|-
| <code>short</code>
| 16
| -32,768 から 32,767
|-
| <code>int</code>
| 32
| -2,147,483,648 から 2,147,483,647
|-
| <code>long</code>
| 64
| -9,223,372,036,854,775,808 から 9,223,372,036,854,775,807
|}
== 関連項目 ==
* [[任意精度演算]]
* [[端数処理]]
* [[量子化誤差]]
* [[浮動小数点数]]
** [[単精度]]
** [[倍精度]]
* [[マシンイプシロン]]
== 外部リンク ==
* [http://mathworld.wolfram.com/RoundoffError.html Roundoff Error] at MathWorld
{{DEFAULTSORT:せいと}}
{{Computer-stub}}
[[Category:算術]]
[[Category:数値解析]]
[[Category:コンピュータのデータ]]
[[Category:数学に関する記事]]
|