Научная запись — это способ выражения чисел , которые слишком велики или слишком малы для удобной записи в десятичной форме , поскольку для этого потребовалось бы выписывать неудобно длинную строку цифр. Она может называться научной формой или стандартной индексной формой , или стандартной формой в Соединенном Королевстве. Эта десятичная запись обычно используется учеными, математиками и инженерами, отчасти потому, что она может упростить определенные арифметические операции . На научных калькуляторах она обычно известна как режим отображения «SCI».
В научной записи ненулевые числа записываются в виде
или m умноженное на десять, возведенное в степень n , где n — целое число , а коэффициент m — ненулевое действительное число (обычно от 1 до 10 по абсолютной величине и почти всегда записываемое в виде конечной десятичной дроби ). Целое число n называется экспонентой , а действительное число m — мантиссой . [1] Термин «мантисса» может быть неоднозначным, когда речь идет о логарифмах, поскольку это также традиционное название дробной части десятичного логарифма . Если число отрицательное , то перед m ставится знак минус , как в обычной десятичной записи. В нормализованной записи экспонента выбирается так, чтобы абсолютное значение (модуль) мантиссы m было не меньше 1, но меньше 10.
Десятичная плавающая точка — это компьютерная арифметическая система, тесно связанная с научной записью.
Любое действительное число можно записать в виде m × 10 n многими способами: например, 350 можно записать как3,5 × 10 2 или35 × 10 1 или350 × 10 0 .
В нормализованной научной нотации (называемой в Соединенном Королевстве «стандартной формой») показатель степени n выбирается таким образом, чтобы абсолютное значение m оставалось не менее единицы , но меньше десяти ( 1 ≤ | m | < 10 ). Таким образом, 350 записывается как3,5 × 10 2 . Эта форма позволяет легко сравнивать числа: числа с большими показателями (из-за нормализации) больше, чем числа с меньшими показателями, а вычитание показателей дает оценку числа порядков величины, разделяющих числа. Это также форма, которая требуется при использовании таблиц десятичных логарифмов . В нормализованной записи показатель степени n отрицателен для числа с абсолютным значением от 0 до 1 (например, 0,5 записывается как5 × 10−1 ). 10 и показатель степени часто опускаются , когда показатель степени равен 0. Для ряда чисел, которые нужно сложить или вычесть (или сравнить иным образом), может быть удобно использовать одно и то же значение m для всех элементов ряда.
Нормализованная научная форма является типичной формой выражения больших чисел во многих областях, если только не требуется ненормализованная или иным образом нормализованная форма, такая как инженерная нотация . Нормализованную научную нотацию часто называют экспоненциальной нотацией , хотя последний термин является более общим и также применяется, когда m не ограничено диапазоном от 1 до 10 (как, например, в инженерной нотации) и к основаниям, отличным от 10 (например, 3,15 × 2 20 ).
Инженерная нотация (часто называемая «ENG» на научных калькуляторах) отличается от нормализованной научной нотации тем, что показатель степени n ограничен кратными 3. Следовательно, абсолютное значение m находится в диапазоне 1 ≤ | m | < 1000, а не 1 ≤ | m | < 10. Несмотря на схожесть по концепции, инженерную нотацию редко называют научной нотацией. Инженерная нотация позволяет числам явно сопоставляться с соответствующими им префиксами СИ , что облегчает чтение и устное общение. Например,12,5 × 10 −9 м можно прочитать как «двенадцать целых пять десятых нанометра» и записать как12,5 нм , в то время как его эквивалент в научной записи1,25 × 10−8 м, скорее всего, будет считываться как «одна целая двадцать пять десятых умноженная на десять в отрицательной степени восемь метров».
Значимая цифра — это цифра в числе, которая увеличивает его точность. Сюда входят все ненулевые числа, нули между значащими цифрами и нули, указанные как значимые . Начальные и конечные нули не являются значимыми цифрами, поскольку они существуют только для того, чтобы показывать масштаб числа. К сожалению, это приводит к неоднозначности. Число1 230 400 обычно читается как имеющее пять значащих цифр: 1, 2, 3, 0 и 4, последние два нуля служат только в качестве заполнителей и не добавляют точности. Однако то же самое число использовалось бы, если бы последние две цифры были также точно измерены и оказались равными 0 – семи значащим цифрам.
Когда число преобразуется в нормализованную научную запись, оно уменьшается до числа от 1 до 10. Все значимые цифры сохраняются, но нули-заполнители больше не требуются. Таким образом1 230 400 станет1,2304 × 10 6 , если бы оно имело пять значащих цифр. Если бы число было известно до шести или семи значащих цифр, оно было бы показано как1,230 40 × 10 6 или1,230 400 × 10 6. Таким образом, дополнительным преимуществом научной записи является то, что количество значащих цифр однозначно.
В научных измерениях принято записывать все определенно известные цифры из измерения и оценивать по крайней мере одну дополнительную цифру, если есть какая-либо информация о ее значении. Полученное число содержит больше информации, чем без дополнительной цифры, которую можно считать значимой цифрой, поскольку она передает некоторую информацию, ведущую к большей точности в измерениях и в агрегации измерений (их сложении или умножении).
Дополнительная информация о точности может быть передана с помощью дополнительных обозначений. Часто бывает полезно знать, насколько точны конечные цифры. Например, принятое значение массы протона может быть правильно выражено как1,672 621 923 69 (51) × 10 −27 кг , что является сокращением для(1,672 621 923 69 ± 0,000 000 000 51 ) × 10 −27 кг . Однако до сих пор неясно, является ли ошибка (5,1 × 10−37 в данном случае) — это максимально возможная ошибка, стандартная ошибка или некоторый другой доверительный интервал .
Калькуляторы и компьютерные программы обычно представляют очень большие или маленькие числа, используя научную нотацию, и некоторые из них можно настроить для единообразного представления всех чисел таким образом. Поскольку верхние индексы экспонент, такие как 10 7, могут быть неудобны для отображения или ввода, буква «E» или «e» (для «экспонента») часто используется для обозначения «умножить на десять, возведенных в степень», так что запись m E n для десятичной значащей части m и целой экспоненты n означает то же самое, что m × 10 n . Например ,6,022 × 10 23 записывается как6.022E23
или6.022e23
, и1,6 × 10 −35 записывается как1.6E-35
или1.6e-35
. Хотя эта сокращенная версия научной записи распространена в компьютерном выводе, некоторые руководства по стилю не рекомендуют ее использовать в опубликованных документах. [2] [3]
Большинство популярных языков программирования, включая Fortran , C / C++ , Python и JavaScript , используют эту нотацию «E», которая пришла из Fortran и присутствовала в первой версии, выпущенной для IBM 704 в 1956 году. [4] Нотация E уже использовалась разработчиками операционной системы SHARE (SOS) для IBM 709 в 1958 году. [5] Более поздние версии Fortran (по крайней мере, начиная с FORTRAN IV с 1961 года) также используют «D» для обозначения чисел двойной точности в научной нотации, [6] а более новые компиляторы Fortran используют «Q» для обозначения учетверенной точности . [7] Язык программирования MATLAB поддерживает использование как «E», так и «D».
Язык программирования АЛГОЛ 60 (1960) использует подстрочный символ « 10 » вместо буквы «E», например: . [8] [9] Это представляло проблему для компьютерных систем, которые не предусматривали такой символ, поэтому АЛГОЛ W (1966) заменил символ одинарной кавычкой, например , [10] а некоторые советские варианты Алгола позволяли использовать кириллическую букву « ю », например . Впоследствии язык программирования АЛГОЛ 68 предоставил выбор символов: , , , , или . [11] Символ АЛГОЛ « 10 » был включен в советскую текстовую кодировку ГОСТ 10859 (1964) и был добавлен в Unicode 5.2 (2009) как U+23E8 ⏨ СИМВОЛ ДЕСЯТИЧНОЙ ЭКСПОНЕНТЫ . [12]6.0221023
6.022'+23
6.022ю+23
E
e
\
⊥
10
Некоторые языки программирования используют другие символы. Например, Simula использует &
(или &&
для long ), как в 6.022&23
. [13] Mathematica поддерживает сокращенную запись 6.022*^23
(резервируя букву E
для математической константы e ).
Первые карманные калькуляторы , поддерживающие научную запись, появились в 1972 году. [14] Для ввода чисел в научную запись калькуляторы включают кнопку с надписью «EXP» или «×10 x », среди других вариантов. Дисплеи карманных калькуляторов 1970-х годов не отображали явный символ между мантиссом и показателем степени; вместо этого одна или несколько цифр оставались пустыми (например 6.022 23
, как в HP-25 ), или пара меньших и слегка приподнятых цифр была зарезервирована для показателя степени (например , как в Commodore PR100 ). В 1976 году пользователь калькулятора Hewlett-Packard Джим Дэвидсон придумал термин decapower для показателя степени научной записи, чтобы отличать его от «обычных» показателей, и предложил букву «D» в качестве разделителя между мантиссом и показателем степени в машинописных числах (например, ); они получили некоторое распространение в сообществе пользователей программируемых калькуляторов. [15] Буквы «E» или «D» использовались в качестве разделителя научной нотации карманными компьютерами Sharp , выпущенными между 1987 и 1995 годами, «E» использовалась для 10-значных чисел, а «D» — для 20-значных чисел двойной точности. [16] Серии калькуляторов Texas Instruments TI-83 и TI-84 (с 1996 года по настоящее время) используют маленькую заглавную букву в качестве разделителя. [17]6.022 23
6.022D23
E
В 1962 году Рональд О. Уитакер из Rowco Engineering Co. предложил систему обозначений степени десяти, в которой показатель степени был бы обведен кружком, например, 6,022 × 10 3 можно было бы записать как «6,022③». [18]
В нормализованной научной нотации, нотации E и инженерной нотации пробел (который в наборе может быть представлен обычным или тонким пробелом ), который допускается только до и после «×» или перед «E», иногда опускается, хотя это реже встречается перед буквенным символом. [19]
Преобразование числа в этих случаях означает либо преобразование числа в форму научной записи, либо преобразование его обратно в десятичную форму, либо изменение экспоненциальной части уравнения. Ничто из этого не изменяет фактическое число, а только то, как оно выражено.
Сначала переместите разделительную точку десятичного разделителя на достаточное количество позиций, n , чтобы поместить значение числа в желаемый диапазон от 1 до 10 для нормализованной записи. Если десятичная точка была перемещена влево, добавьте ; справа, . Для представления числа× 10n
× 10−n
1 230 400 в нормализованной научной записи, десятичный разделитель будет перемещен на 6 цифр влево и добавлен, в результате чего получится× 106
1,2304 × 10 6. Число−0,004 0321 будет иметь десятичный разделитель, смещенный на 3 цифры вправо, а не влево, и дастВ результате −4,0321 × 10 −3 .
Преобразуя число из научной записи в десятичную, сначала удалите в конце, затем сдвиньте десятичный разделитель на n цифр вправо (положительное n ) или влево (отрицательное n ). Число× 10n
1,2304 × 10 6 будет иметь десятичный разделитель, смещенный на 6 цифр вправо и примет вид1,230,400 , в то время как−4,0321 × 10 −3 будет иметь десятичный разделитель, смещенный на 3 цифры влево и равный−0,004 0321 .
Преобразование между различными научными представлениями одного и того же числа с различными экспоненциальными значениями достигается путем выполнения противоположных операций умножения или деления на степень десяти в значащей части и вычитания или прибавления единицы в экспоненциальной части. Десятичный разделитель в значащей части сдвигается на x позиций влево (или вправо), а x добавляется к (или вычитается из) экспоненты, как показано ниже.
Даны два числа в научной записи, и
Умножение и деление выполняются с использованием правил для операций с возведением в степень : и
Вот несколько примеров: и
Сложение и вычитание требуют, чтобы числа были представлены с использованием одной и той же экспоненциальной части, так чтобы мантисса могла быть просто добавлена или вычтена:
Далее складываем или вычитаем значимые части:
Пример:
В то время как основание 10 обычно используется для научной записи, могут использоваться и степени других оснований, [25] основание 2 является следующим по частоте использования.
Например, в научной нотации с основанием 2 число 1001 b в двоичной системе счисления (=9 d ) записывается как 1,001 b × 2 d 11 b или 1,001 b × 10 b 11 b с использованием двоичных чисел (или короче 1,001 × 10 11 , если двоичный контекст очевиден). [ необходима цитата ] В нотации E это записывается как 1,001 b E11 b (или короче: 1,001E11) с буквой «E» теперь обозначающей «умножить на два (10 b ) в степени». Чтобы лучше отличить эту экспоненту с основанием 2 от экспоненты с основанием 10, экспонента с основанием 2 иногда также обозначается с помощью буквы «B» вместо «E», [26] сокращенное обозначение, первоначально предложенное Брюсом Аланом Мартином из Брукхейвенской национальной лаборатории в 1968 году, [27] как 1,001 b B11 b (или короче: 1,001B11). Для сравнения, то же самое число в десятичном представлении : 1,125 × 2 3 (используя десятичное представление), или 1,125B3 (все еще используя десятичное представление). Некоторые калькуляторы используют смешанное представление для двоичных чисел с плавающей точкой, где экспонента отображается как десятичное число даже в двоичном режиме, поэтому приведенное выше становится 1,001 b × 10 b 3 d или короче 1,001B3. [26]
Это тесно связано с представлением чисел с плавающей точкой по основанию 2 , обычно используемым в компьютерной арифметике, и использованием двоичных префиксов IEC (например, 1B10 для 1×2 10 ( kibi ), 1B20 для 1×2 20 ( mebi ), 1B30 для 1×2 30 ( gibi ), 1B40 для 1×2 40 ( tebi )).
Подобно «B» (или «b» [28] ), буквы «H» [26] (или «h» [28] ) и «O» [26] (или «o», [28] или «C» [26] ) иногда также используются для обозначения умножения на 16 или 8 в степени , как в 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. [26]
Другим похожим соглашением для обозначения показателей степени с основанием 2 является использование буквы «P» (или «p», для «power»). В этой нотации мантисса всегда подразумевается шестнадцатеричной, тогда как показатель степени всегда подразумевается десятичной. [29] Эта нотация может быть получена реализациями семейства функций printf , следующих спецификации C99 и стандарту IEEE Std 1003.1 POSIX ( Единая спецификация Unix ) , при использовании спецификаторов преобразования %a или %A . [29] [30] [31] Начиная с C++11 , функции ввода-вывода C++ также могли анализировать и печатать нотацию P. Между тем, эта нотация была полностью принята стандартом языка с C++17 . [32] Swift от Apple также поддерживает ее. [33] Она также требуется двоичным стандартом с плавающей точкой IEEE 754-2008 . Пример: 1.3DEp42 представляет 1.3DE h × 2 42 .
Инженерную нотацию можно рассматривать как научную нотацию с основанием 1000.
Sayre, David , ed. (1956-10-15). Система автоматического кодирования FORTRAN для IBM 704 EDPM: Справочное руководство программиста (PDF) . Нью-Йорк: Отдел прикладных наук и исследовательский отдел программирования, Международная корпорация бизнес-машин . стр. 9, 27. Получено 04.07.2022 .(2+51+1 страницы)
Он сообщает транслятору ввода, что преобразуемое поле представляет собой десятичное число в форме ~X.XXXXE ± YY, где E подразумевает, что значение ~x.xxxx должно быть масштабировано на десять в степени ±YY.(4 страницы) (Примечание. Это было представлено на заседании ACM 11–13 июня 1958 г.)
Digital Fortran 77 также допускает синтаксис Qsnnn, если поле экспоненты находится в диапазоне двойной точности T_floating. […] Константа REAL*16 — это базовая вещественная константа или целочисленная константа, за которой следует десятичная экспонента. Десятичная экспонента имеет вид: Qsnn […] s — необязательный знак […] nn — строка десятичных цифр […] Этот тип константы доступен только в системах Alpha .Intel Fortran: Справочник языка (PDF) . Корпорация Intel . 2005 [2003]. стр. 3-7–3-8, 3–10. 253261-003 . Получено 22.12.2022 .(858 страниц)Compaq Visual Fortran – Справочник языка (PDF) . Хьюстон: Compaq Computer Corporation . Август 2001 г. Получено 22.12.2022 .(1441 страница)
"6. Расширения: 6.1 Расширения, реализованные в GNU Fortran: 6.1.8 Q exponent-letter". Компилятор GNU Fortran. 2014-06-12 . Получено 2022-12-21 .
{{cite book}}
: CS1 maint: отсутствует местоположение издателя ( ссылка )"Стандарт Unicode" (ред. v. 7.0.0) . Получено 2018-03-23 .
Vanderburgh, Richard C., ed. (ноябрь 1976 г.). "Decapower" (PDF) . 52-Notes – Информационный бюллетень Клуба пользователей SR-52 . 1 (6). Дейтон, Огайо: 1. V1N6P1 . Получено 28.05.2017 . Decapower – В выпуске журнала 65-Notes (V3N1p4) за январь 1976 г. Джим Дэвидсон ( член Клуба пользователей HP-65 № 547) предложил термин "decapower" в качестве описания множителя степени десяти, используемого в экспоненциальной записи. Я собираюсь начать использовать его вместо " exponent ", что технически неверно, и буквы D для отделения "mantissa" от decapower для машинописных чисел, как предлагает Джим. Например, [ sic ], который отображается в экспоненциальной записи так, как теперь будет записано . Возможно, поскольку эта нотация будет использоваться все чаще, производители калькуляторов изменят свои сокращения на клавиатуре. EEX от HP и EE от TI могут быть изменены на ED (для ввода decapower).
[1] "Decapower". 52-Notes – Информационный бюллетень Клуба пользователей SR-52 . Том 1, № 6. Дейтон, Огайо. Ноябрь 1976 г. стр. 1. Получено 07.05.2018 .(Примечание. Термин decapower часто использовался в последующих выпусках этого информационного бюллетеня по крайней мере до 1978 года.)123−45
1.23 -43
1.23D-43
電言板6 PC-U6000 БИБЛИОТЕКА ПРОГРАММ[ Библиотека программ телефонной платы 6 PC-U6000 ] (на японском). Том 6. University Co-op. 1993.
«Руководство программиста TI-83» (PDF) . Проверено 9 марта 2010 г.
"INTOUCH 4GL: руководство по языку INTOUCH". Архивировано из оригинала 2015-05-03.
Шестнадцатеричные литералы с плавающей точкой не были частью C++ до C++17, хотя их можно анализировать и печатать функциями ввода-вывода с C++11: как потоками ввода-вывода C++, когда включен std::hexfloat, так и потоками CI/O: std::printf, std::scanf и т. д. Описание формата см. в std::strtof.