科学的記数法は、大きすぎる数や小さすぎる数を十進数で表すのが不便な場合に用いる表記法です。十進数で表すと、非常に長い数字列を並べなければならなくなるためです。科学的記数法は、科学的形式、標準指数形式、または英国では標準形式とも呼ばれます。この10進数表記は、特定の算術演算を簡略化できるため、科学者、数学者、技術者に広く用いられています。科学計算機では、通常「SCI」表示モードとして知られています。
科学的記数法では、ゼロ以外の数は次の形式で表記されます。
またはmの 10 乗n乗、ここでnは整数、係数mはゼロでない実数(通常、絶対値は 1 から 10 の間であり、ほぼ常に有限小数として表記される)。整数nは指数と呼ばれ、実数m は仮数または仮数と呼ばれる。[ 1 ]対数が関係する場合、「仮数」という用語は曖昧になることがある。これは、常用対数の小数部分の伝統的な名称でもあるためである。数が負の場合は、通常の小数表記と同様に、 m の前にマイナス記号が付く。正規化表記では、指数は、仮数mの絶対値(法) が1 以上 10 未満になるように選択される。
10進浮動小数点数は、科学的記数法と密接に関連するコンピュータ演算システムである。

計算尺を用いて計算を行うには、標準形式の式が必要です。そのため、技術者や教育者がこのツールを使用するにつれて、科学的記数法の使用が増加しました。詳しくは「計算尺の歴史」をご覧ください。
任意の実数は、 m × 10 ^ nの形式でさまざまな方法で表すことができます。たとえば、350 は次のように表すことができます。3.5 × 10 2または35 × 10 1または350 × 10 0。
正規化された科学的記数法(英国では「標準形式」と呼ばれる)では、指数nはmの絶対値が1 以上 10 未満となるように選択されます( 1 ≤ | m | < 10 )。したがって、350 は次のように表記されます。3.5 × 10 2。この形式は数値の比較を容易にします。指数が大きい数値は(正規化により)指数が小さい数値よりも大きく、指数の引き算によって数値間の桁数の差を推定できます。また、常用対数の表を使用する際にもこの形式が必要です。正規化表記では、絶対値が 0 から 1 の間の数値の場合、指数nは負になります (たとえば、0.5 は次のように表記されます) 。5 × 10 −1 )。指数が 0 の場合、10 と指数は省略されることがよくあります。加算または減算(またはその他の方法で比較)する一連の数値の場合、数列のすべての要素に対して同じnの値を使用すると便利です。
正規化された科学的表記法は、多くの分野で大きな数を表す典型的な形式です。ただし、工学表記法のように、正規化されていない形式や異なる正規化形式が必要な場合は除きます。正規化された科学的表記法は、しばしば指数表記法と呼ばれます。ただし、後者の用語はより一般的で、m が1 ~ 10 の範囲に限定されていない場合 (例えば工学表記法の場合) や、 10 以外の基数(例えば3.15 × 2 ^ 20 ) にも適用されます。
工学表記法(科学計算機では「ENG」と表記されることが多い)は、指数n が3 の倍数に制限されている点で、正規化された科学表記法とは異なります。したがって、 mの絶対値は 1 ≤ | m | < 1000の範囲であり、1 ≤ | m | < 10 の範囲ではありません。概念的には似ていますが、工学表記法が科学表記法と呼ばれることはまれです。工学表記法では、数値を対応するSI 接頭辞と明示的に一致させることができるため、読みやすく、口頭でのコミュニケーションが容易になります。たとえば、12.5 × 10 −9 m は「12.5ナノメートル」と読み、次のように表記できます。12.5 nm、その科学的表記は1.25 × 10⁻⁸ m は、「1.25 × 10⁻⁸ メートル」と読み上げられる可能性が高いでしょう。
電卓やコンピュータプログラムは通常、非常に大きな数や小さな数を科学的記数法で表示し、一部のプログラムではすべての数をそのように統一的に表示するように設定できます。10⁷の ⟨7⟩のような上付き指数は表示や入力が不便な場合があるため、「 10のべき乗」を表すために「E」または「e」(「指数」の略)がよく使われます。そのため、小数mと整数指数nの表記m E nはm × 10ⁿと同じ意味になります。例えば6.022 × 10 236.022E23はまたは表記され6.022e23、1.6 × 10 −351.6E-35はまたはと表記されます1.6e-35。正のべき乗が明示的に示される場合もあります (6.022E+23または6.022e+23)。コンピュータの出力では一般的ですが、この簡略化された科学的表記法は、一部のスタイルガイドでは出版物での使用が推奨されていません。 [ 2 ] [ 3 ]
Fortran、C / C++、Python、JavaScriptなど、最も人気のあるプログラミング言語のほとんどは、Fortran に由来し、1956 年にIBM 704向けにリリースされた最初のバージョンに存在していたこの「E」表記を使用しています。 [ 4 ] E表記は、 1958 年にIBM 709用のSHARE オペレーティング システム(SOS) の開発者によって既に使用されていました。[ 5 ] Fortran の後のバージョン (少なくとも1961 年のFORTRAN IV以降) では、科学的表記の倍精度数を表すために「D」も使用されており、[ 6 ]新しい Fortran コンパイラでは、4 倍精度を表すために「Q」が使用されています。[ 7 ] MATLABプログラミング言語は、「E」または「D」のどちらでも使用できます。
ALGOL 60 (1960) プログラミング言語では、文字「E」の代わりに添え字の「10 」文字を使用します。例: 。[ 8 ] [ 9 ]これは、そのような文字を提供しないコンピュータ システムにとって課題となったため、ALGOL W (1966) ではこの記号をシングル クォートに置き換えました。例: 。[ 10 ]また、ソ連の ALGOL のいくつかの派生版では、キリル文字「ю」の使用が許可されました。例: 。その後、ALGOL 68プログラミング言語では、文字の選択肢が提供されました: 、、、、。[ 11 ] ALGOL の「10 」文字は、ソ連のGOST 10859テキスト エンコーディング (1964)に含まれ、Unicode 5.2 (2009)にU+23E8 ⏨ DECIMAL EXPONENT SYMBOLとして追加されました。[ 12 ]6.02210236.022'+236.022ю+23Ee\⊥10
一部のプログラミング言語では、他の記号が使用されます。たとえば、Simula では&(またはlong&&の場合は)を使用し、 のようになります。[ 13 ] Mathematica は、短縮表記(文字 は数学定数e用に予約されています) をサポートしています。6.022&236.022*^23E

科学的記数法をサポートする最初のポケット電卓は1972 年に登場しました。[ 14 ]科学的記数法で数値を入力するために、電卓には「EXP」または「×10 x」などのラベルが付いたボタンがあります。1970 年代のポケット電卓のディスプレイには、仮数と指数の間に明示的な記号は表示されませんでした。代わりに、1 桁以上の数字が空白のままになっていたり ( HP-256.022 23に見られるように)、指数用に小さく少し盛り上がった 2 桁が確保されていたりしました ( Commodore PR100に見られるように)。1976 年、ヒューレット・パッカードの電卓ユーザーであるジム・デビッドソンは、科学的記数法の指数を「通常の」指数と区別するために「デカパワー」という用語を作り出し、タイプされた数値の仮数と指数の間の区切り文字として文字「D」を提案しました (たとえば)。これらはプログラム電卓ユーザーコミュニティである程度普及しました。[ 15 ] 1987年から1995年の間に発売されたシャープのポケットコンピュータでは、科学表記の区切り文字として「E」または「D」が使用されていました。「E」は10桁の数値に、「D」は20桁の倍精度数値に使用されていました。[ 16 ]テキサス・インスツルメンツのTI-83およびTI-84シリーズの電卓(1996年~現在)では、区切り文字として小文字が使用されています。[ 17 ]6.022 236.022D23E
1962年、Rowco Engineering Co.のRonald O. Whitakerは、指数を丸で囲む10のべき乗システムの命名法を提案した。例えば、6.022 × 10 3は「6.022③」と表記される。[ 18 ]
有効数字とは、数値の精度を高める桁のことです。これには、ゼロ以外のすべての数値、有効数字間のゼロ、および有効数字として指定されたゼロが含まれます。先頭と末尾のゼロは、数値のスケールを示すためだけに存在するため、有効数字ではありません。残念ながら、これは曖昧さを招きます。1 230 400は通常、有効数字が 5 桁 (1、2、3、0、4) であると読みます。最後の 2 つのゼロは単なる桁上げであり、精度を高めるものではありません。しかし、最後の 2 桁も正確に測定して 0 であることがわかった場合、同じ数字が使用されます。つまり、有効数字は 7 桁になります。
数値を正規化された科学的記数法に変換すると、1から10の間の数値に縮小されます。すべての有効数字は残りますが、位取り用のゼロは不要になります。したがって1,230,400は有効数字が 5 桁の場合、 1.2304 × 10 6 となります。有効数字が 6 桁または 7 桁の場合、次のように表示されます。1.230 40 × 10 6または1.230 400 × 10 6。このように、科学的表記法のもう 1 つの利点は、有効数字の数が曖昧でないことです。
科学的な計測においては、測定値から確実に分かっている桁数をすべて記録し、さらに少なくとも1桁の桁について何らかの情報が得られる場合は、その桁数を推定するのが一般的です。こうして得られた数値は、追加の桁がない場合よりも多くの情報を含んでおり、この追加桁は、計測や計測値の集計(加算や乗算)の精度向上につながる情報を提供するため、有効桁とみなすことができます。
科学的記数法で表された値の精度に関するより詳細な情報は、追加の表記法によって伝えることができます。例えば、陽子の質量の既知の値は次のように表すことができます。1.672 621 925 95 (52) × 10 −27 kgは、(1.672 621 925 95 ± 0.000 000 000 52 ) × 10 −27 kg。しかし、このように表現された誤差が5.2 × 10 −37 (この場合は) は、最大許容誤差、標準誤差、またはその他の信頼区間です。
正規化された科学表記法、E表記法、および工学表記法では、 「×」の前後または「E」の前にのみ許容されるスペース(組版では通常の幅のスペースまたは細いスペースで表される)が省略されることがあるが、アルファベット文字の前で省略されることはあまりない。[ 19 ]
このような場合、数値を変換するとは、数値を科学的記数法に変換するか、小数に戻すか、または式の指数部分を変更することを意味します。これらの変換はいずれも実際の数値を変更するものではなく、数値の表現方法のみを変更します。
まず、小数点をnだけ移動させて、数値の値を目的の範囲内(正規化表記の場合は1~10)に収めます。小数点を左に移動した場合は、右にセミコロン(;)を付加します。数値を表すには、× 10n× 10−n正規化された科学的表記法では、 1,230,400 の小数点区切り文字が 6 桁左に移動され、追加されます。× 1061.2304 × 10⁶ 。−0.004 0321の小数点区切り文字は左ではなく右に 3 桁シフトされ、その結果、−4.0321 × 10 −3となった。
数値を科学的表記から十進表記に変換するには、まず末尾の を削除し、次に小数点をn桁右 ( nが正の場合) または左 ( nが負の場合) に移動させます。× 10n1.2304 × 10 6は、小数点が 6 桁右にシフトされ、1,230,400、一方−4.0321 × 10 −3の小数点区切り文字が 3 桁左に移動すると、−0.004 0321。
異なる指数値を持つ同じ数値の異なる科学的表記法間の変換は、仮数部に対して10のべき乗による乗算または除算を行い、指数部に対して1の減算または加算を行うことによって実現されます。仮数部の小数点記号は左(または右)にx桁移動され、指数部にxが加算(または減算)されます。詳細は以下をご覧ください。
科学的記数法で表された2つの数値が与えられた場合、 そして
例としては以下のようなものがあります。 そして
加算と減算では、仮数を単純に加算または減算できるように、数値を同じ指数部で表す必要があります。
次に、仮数を加算または減算します。
例:
科学的表記法では通常10進法が用いられるが、他の基数のべき乗も使用可能であり、[ 25 ]次によく用いられるのは2進法である。
例えば、2進数表記では、1001 b を2 進数(=9 d ) で表すと、1.001 b × 2 d 11 b または 1.001 b × 10 b 11 b と表記されます( 2進数の文脈が明らかな場合は、1.001 × 10 11 と短く表記することもできます)。E表記では、1.001 b E11 b (または、より短く表記すると 1.001E11) と表記され、文字「E」は「2 (10 b ) のべき乗」を表します。この 2 進指数を 10 進指数とより明確に区別するために、2 進指数は「E」の代わりに「B」を使用して示されることもあります。[ 26 ]これは、1968 年にブルックヘブン国立研究所のブルース・アラン・マーティンによって最初に提案された略記法です。[ 27 ]例えば、1.001 b B11 b (または短縮形: 1.001B11)のようになります。比較のために、同じ数を10 進数で表すと次のようになります。1.125 × 2 3 (10 進数を使用)、または 1.125B3 (10 進数を使用)。一部の電卓では、バイナリ浮動小数点数に混合表現を使用しており、バイナリモードでも指数が 10 進数として表示されるため、上記は1.001 b × 10 b 3 dまたは短縮形 1.001B3 になります。[ 26 ]
これは、コンピュータ演算で一般的に使用される2進浮動小数点表現と、IECバイナリプレフィックスの使用(例:1×2 10(kibi )の1B10、1×2 20(mebi )の1B20、1 ×2 30(gibi )の1B30、1 ×2 40(tebi)の1B40 )に密接に関連しています。
「B」(または「b」[ 28 ])と同様に、「H」[ 26 ](または「h」[ 28 ])と「O」[ 26 ](または「o」[ 28 ]または「C」[ 26 ] )も、1.25 = 1.40 h × 10 h 0 h = 1.40H0 = 1.40h0、または 98000 = 2.7732 o × 10 o 5 o = 2.7732o5 = 2.7732C5のように、 16 乗または 8 乗を示すために使用されることがあります。[ 26 ]
2 進指数を表すもう 1 つの類似した慣習は、文字「P」(または「p」、つまり「power」)を使用することです。この表記では、仮数は常に 16 進数、指数は常に 10 進数です。[ 29 ]この表記は、C99仕様および ( Single Unix Specification ) IEEE Std 1003.1 POSIX標準に準拠したprintfファミリー関数の実装で、%aまたは%A変換指定子を使用する場合に生成できます。[ 29 ] [ 30 ] [ 31 ] C++11以降、C++ のI/O関数も P 表記を解析して出力できるようになりました。一方、この表記はC++17以降、言語標準に完全に採用されています。[ 32 ] AppleのSwiftもこれをサポートしています。[ 33 ]また、 IEEE 754-2008バイナリ浮動小数点標準でも要求されています。例: 1.3DEp42 は1.3DE h × 2 42を表します。
工学表記法は、1000を基数とする科学的表記法と見なすことができる。
これは、変換するフィールドが ~X.XXXXE ± YY の形式の 10 進数であることを入力トランスレータに伝えます。ここで、E は ~x.xxxx の値を ±YY 乗で 10 倍することを意味します。(4ページ)(注:これは1958年6月11日~13日に開催されたACM会議で発表されたものです。)
Fortran 77 では、指数フィールドが T_floating 倍精度の範囲内であれば、構文 Qsnnn も使用できます。[…] REAL*16 定数は、基本実数定数または整数定数に小数指数が続くものです。小数指数は次の形式です: Qsnn […] s はオプションの符号です […] nn は小数点の文字列です […] このタイプの定数はAlpha システムでのみ使用できます。Intel Fortran: 言語リファレンス(PDF) . Intel Corporation . 2005 [2003]. pp. 3-7 – 3-8 , 3– 10. 253261-003 . 2022-12-22に取得. (858ページ)Compaq Visual Fortran – 言語リファレンス(PDF)。ヒューストン: Compaq Computer Corporation。2001年8月。 2022年12月22日取得。(1441ページ)「6. 拡張機能: 6.1 GNU Fortran で実装された拡張機能: 6.1.8 Q 指数文字」。GNU Fortran コンパイラ。2014-06-12。2022-12-21に取得。
– 1976 年 1 月号の65-Notes (V3N1p4) で、ジム デビッドソン ( HP-65ユーザー クラブ会員番号 547) は、科学的表記法の表示で使用される 10 のべき乗乗数の記述子として「デカパワー」という用語を提案しました。技術的に不正確な「指数」の代わりにこれを使用し始め、ジムが提案しているように、タイプされた数字の「仮数部」と 10 のべき乗を区切るために文字 D を使用することにします。例えば、科学的表記では と表示される[ sic ]は、今後は と表記されるようになります。おそらく、この表記法がますます普及するにつれて、電卓メーカーはキーボードの略語を変更するでしょう。HP の EEX や TI の EE は ED (enter decapower の略) に変更される可能性があります。「デカパワー」。52 -Notes – SR-52ユーザーズクラブのニュースレター。第 1巻、第 6号。オハイオ州デイトン。1976年11月。1ページ 。2018年5月7日取得。(注:デカパワーという用語は、少なくとも1978年までのこのニュースレターのその後の号で頻繁に使用されました。)123−451.23 -431.23D-43
16 進浮動小数点リテラルは C++17 まで C++ の一部ではありませんでしたが、C++11 以降は I/O 関数で解析および出力できます。std::hexfloat が有効になっている C++ I/O ストリームと CI/O ストリーム (std::printf、std::scanf など) の両方で使用できます。フォーマットの説明については、std::strtof を参照してください。