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

計算尺を使って計算を行うには、標準的な形式による表現が必要です。そのため、技術者や教育者がこの道具を使うにつれて、科学的記法の使用が増えていきました。計算尺#歴史 を参照してください。
実数はm × 10nの形で様々な方法で表記できる。例えば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と指数は省略されることが多い。加算または減算(あるいは比較)する一連の数値の場合、その一連の数値のすべての要素に対して同じmの値を使用すると便利な場合がある。
正規化された科学的表記法は、多くの分野において大きな数値を表現する際に一般的に用いられる形式です。ただし、工学表記法のような非正規化形式や異なる正規化形式が求められる場合は除きます。正規化された科学的表記法は、しばしば指数表記法と呼ばれます。ただし、後者の用語はより一般的であり、mが1から10の範囲(例えば工学表記法のように)に制限されない場合や、10以外の基数(例えば3.15 × 2 20)にも適用されます。
工学表記法(科学電卓では「ENG」と表記されることが多い)は、指数nが3の倍数に制限されている点で正規化科学表記法とは異なります。したがって、 mの絶対値は1 ≤ | m | < 10ではなく、1 ≤ | m | < 1000の範囲になります。概念は似ていますが、工学表記法が科学表記法と呼ばれることは稀です。工学表記法では、数値を対応するSI接頭辞と明確に一致させることができるため、読みやすく、口頭でのコミュニケーションも容易になります。例えば、12.5 × 10 −9 mは「12.5ナノメートル」と読み、次のように書きます。12.5 nmであるが、科学的表記法では1.25 × 10 −8 mはおそらく「1.25 × 10 の負の 8 乗メートル」と読み上げられるでしょう。
計算機やコンピュータプログラムは通常、非常に大きな数値や非常に小さな数値を科学的記数法で表示します。中には、すべての数値を科学的記数法で統一して表示するように設定できるものもあります。10 7のような上付き指数は表示や入力に不便なため、「10の累乗」を表すには「E」または「e」(指数の略)という文字がよく使われます。例えば、小数点以下がmで指数がnのとき、 m E nという表記はm × 10 nと同じ意味になります。例えば、6.022 × 10 236.022E23はまたは書き6.022e23、1.6 × 10 −351.6E-35はまたはと表記されます1.6e-35。コンピュータ出力ではこの省略形の科学的記法が一般的ですが、一部のスタイルガイドでは出版文書では推奨されていません。 [2] [3]
Fortran、C / C++、Python、JavaScriptなどのほとんどの人気のプログラミング言語では、この「E」表記法が使用されています。この表記法はFortranに由来し、1956年にIBM 704向けにリリースされた最初のバージョンに存在していました。[4] E表記法は、1958年にIBM 709用のSHAREオペレーティング・システム(SOS)の開発者によって既に使用されていました。 [5] Fortranの後のバージョン(少なくとも1961年のFORTRAN IV以降)でも、科学的記数法で倍精度数を表すために「D」が使用され、 [6]新しいFortranコンパイラでは「Q」が4倍精度を表します。[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&23 6.022*^23E

科学的記数法に対応した最初のポケット電卓は1972年に登場した。[14]科学的記数法で数値を入力するための電卓には、「EXP」や「×10 x」といったラベルの付いたボタンなどが搭載されていた。1970年代のポケット電卓のディスプレイには、仮数部と指数部の間に明確な記号は表示されず、代わりに1桁以上の数字が空白のまま残されていた(例えば6.022 23、HP-25)。あるいは、指数部には2桁の小さくわずかに盛り上がった数字が予約されていた(例えば、コモドールPR100)。1976年、ヒューレット・パッカードの電卓ユーザーであったジム・デイビッドソンは、科学的記数法の指数部を「通常の」指数部と区別するために「デカパワー」という用語を造り出し、タイプ入力された数値(例えば、 )において仮数部と指数部を区切る文字として「D」を使用することを提案した。これらはプログラマブル電卓のユーザーコミュニティで広く普及した。[15]シャープが1987年から1995年にかけて発売したポケットコンピュータでは、科学表記の区切り文字として「E」または「D」の文字が使用されていました。「E」は10桁の数値、「D」は20桁の倍精度数値に使用されていました。[16]テキサス・インスツルメンツのTI-83およびTI-84シリーズ(1996年以降)の電卓では、区切り文字として小文字の大文字が使用されています。[17]6.022 236.022D23 E
1962年、ロウコ・エンジニアリング社のロナルド・O・ウィテカーは、指数を丸で囲む10のべき乗法を提案した。例えば、6.022×10⁻³は「6.022⁻³」と表記される。[18]
有効数字とは、数値の精度を高めるための桁のことです。これには、ゼロ以外のすべての数値、有効数字間のゼロ、そして有効数字として指定されたゼロが含まれます。先頭と末尾のゼロは、数値のスケールを示すためだけに存在するため、有効数字ではありません。残念ながら、これは曖昧さを招きます。1 230 400は通常、1、2、3、0、4 の5桁の有効数字で表されます。最後の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.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の範囲(正規化表記の場合は1から10)に収まるようにします。小数点が左に移動した場合は、右に ;を追加します。× 10n× 10−n1,230,400を正規化された科学的記数法で表すと、小数点の区切りは6桁左に移動されて追加され、× 1061.2304 × 10 6。−0.004 0321は小数点が左ではなく右に3桁シフトされ、結果として
−4.0321 × 10 −3となる。
数値を科学的記数法から10進数記数法に変換するには、まず末尾の を削除し、次に小数点記号を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進数表記を使用)となります。一部の計算機では、2進浮動小数点数に混合表記法が用いられ、指数は2進数モードでも10進数として表示されます。そのため、上記の場合は1.001 b × 10 b 3 dまたは短縮形:1.001B3となります。[26]
これは、コンピュータの演算で一般的に使用される 2 進浮動小数点表現、および IEC 2 進プレフィックスの使用(例: 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」)を使用することです。この表記法では、仮数部は常に16進数、指数部は常に10進数となります。[29]この表記法は、C99仕様および(Single Unix仕様)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 を基数とする科学的表記法として考えることができます。
Sayre, David編 (1956年10月15日). IBM 704 EDPM用FORTRAN自動コーディングシステム:プログラマーズ・リファレンス・マニュアル(PDF) . ニューヨーク: International Business Machines Corporation応用科学部門およびプログラミング研究部門. pp. 9, 27. 2022年7月4日閲覧.(2+51+1ページ)
これは、入力トランスレータに対して、変換対象のフィールドが ~X.XXXXE ± YY という形式の10進数であることを指示します。ここで、E は ~x.xxxx の値が 10 の ±YY 乗でスケーリングされることを意味します。(4 ページ) (注: これは 1958 年 6 月 11 日から 13 日にかけて開催された ACM 会議で発表されました。)
Fortran 77では、指数部がT_floating倍精度の範囲内にある場合、Qsnnnという構文も使用できます。[…] REAL*16定数は、基本的な実定数、または整数定数に10進指数が続くものです。10進指数の形式はQsnnです[…] sはオプションの符号です[…] nnは10進数字の文字列です[…] このタイプの定数は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年6月12日。 2022年12月21日閲覧。
「Unicode標準」(v. 7.0.0版) 。 2018年3月23日閲覧。
Vanderburgh, Richard C. 編 (1976年11月). 「デカパワー」(PDF) . 52-Notes – SR-52ユーザーズクラブのニュースレター. 1 (6). オハイオ州デイトン: 1. V1N6P1. オリジナル(PDF)から2017年5月28日にアーカイブ. 2017年5月28日閲覧.デカパワー– 1976年1月号の65-Notes (V3N1p4)で、Jim Davidson ( HP-65ユーザーズクラブ会員 #547) は、科学的記数法表示で使用される10のべき乗を表す用語として「デカパワー」を提案しました。私は、Jim の提案にもあるように、この用語を「指数」の代わりに使用し、また、タイプ入力された数値の「仮数」とデカパワーを区切る文字としてDを使用することにします。例えば、[ sic ] は科学的記数法で表示されますが、現在は と表記されます。この記法の使用頻度が高まっていくにつれて、電卓メーカーはキーボードの略語を変更するかもしれません。HPのEEXやTIのEEは、ED(10乗を入力)に変更されるかもしれません。
[1] 「デカパワー」. 52-Notes – SR-52ユーザーズクラブのニュースレター. 第1巻第6号. オハイオ州デイトン. 1976年11月. p. 1. 2018年5月7日閲覧。(注:デカパワーという用語は、少なくとも 1978 年まではこのニュースレターの以降の号で頻繁に使用されていました。)
123−451.23 -431.23D-43
電言板6 PC-U6000 プログラムライブラリ[電話盤6 PC-U6000 プログラムライブラリ] 第6巻. 大学生協. 1993年.
「TI-83 プログラマーズガイド」(PDF) 。2010 年 3 月 9 日に取得。
「INTOUCH 4GL INTOUCH言語ガイド」。2015年5月3日時点のオリジナルよりアーカイブ。
進浮動小数点リテラルはC++17まではC++の一部ではありませんでしたが、C++11以降はI/O関数によって解析および出力できます。std::hexfloatが有効になっている場合のC++ I/Oストリームと、std::printf、std::scanfなどのCI/Oストリームの両方で解析および出力できます。フォーマットの説明については、std::strtofを参照してください。