Тип double в си: Встроенные типы (C++) | Microsoft Learn

Встроенные типы (C++) | Microsoft Learn

  • Статья

Встроенные типы (также называемые фундаментальными типами) задаются стандартом языка C++ и встроены в компилятор. Встроенные типы не определены ни в одном файле заголовка. Встроенные типы делятся на три основные категории: целочисленный, с плавающей запятой и void. Целочисленные типы представляют целые числа. Типы с плавающей запятой могут указывать значения, которые могут иметь дробные части. Большинство встроенных типов рассматриваются компилятором как отдельные типы. Однако некоторые типы являются синонимами или рассматриваются компилятором как эквивалентные типы.

Тип void

Тип void описывает пустой набор значений. Переменная типа void не может быть указана. Тип void используется в основном для объявления функций, которые не возвращают значения, или для объявления универсальных указателей на нетипизированные или произвольно типизированные данные. Любое выражение можно явно преобразовать или привести к типу void. Однако такие выражения можно использовать только в следующих операторах и операндах:

  • в операторе выражения (Дополнительные сведения см. в разделе Выражения.)

  • в левом операнде оператора запятой (Дополнительные сведения см. в разделе Оператор-запятая.)

  • во втором и третьем операндах условного оператора (? :). (Дополнительные сведения см. в разделе Выражения с условным оператором.)

std::nullptr_t

Ключевое слово nullptr является константой null-указателя типа std::nullptr_t, которая может быть преобразована в любой необработанный тип указателя. Для получения дополнительной информации см. nullptr.

Тип Boolean

Тип bool может иметь значения true и false. Размер bool типа зависит от реализации. Дополнительные сведения о реализации для майкрософт см. в разделе Размеры встроенных типов .

Символьные типы

Тип char — это тип представления символов, который эффективно кодирует элементы базового набора символов выполнения. Компилятор C++ обрабатывает переменные типа char, signed charи unsigned char как переменные разных типов.

Для майкрософт. Переменные типа char по умолчанию повышаются до int типа , как будто из типа signed char , если /J не используется параметр компиляции. В этом случае они рассматриваются как тип unsigned char и повышаются до int без расширения знака.

Переменная типа wchar_t — это расширенный или многобайтовый символьный тип. L Используйте префикс перед символом или строковым литералом, чтобы указать тип расширенных символов.

Для майкрософт: по умолчанию wchar_t является собственным типом, но можно использовать для /Zc:wchar_t- создания wchar_t определения типа для unsigned short. __wchar_t — синоним для машинного типа wchar_t для систем Майкрософт.

Тип char8_t используется для представления символов UTF-8. Он имеет то же представление, что unsigned charи , но рассматривается компилятором как отдельный тип. Тип char8_t является новым в C++20. Для использования требуется параметр компилятора char8_t/std:c++20 или более поздней версии (например /std:c++latest, ).

Тип char16_t используется для представления символов UTF-16. Он должен быть достаточно большим, чтобы представлять любую единицу кода UTF-16. Компилятор рассматривает его как отдельный тип.

Тип char32_t используется для представления символов UTF-32. Он должен быть достаточно большим, чтобы представлять любую единицу кода UTF-32. Компилятор рассматривает его как отдельный тип.

Типы с плавающей запятой

Типы с плавающей запятой используют представление IEEE-754 для обеспечения приближения дробных значений в широком диапазоне величин. В следующей таблице перечислены типы с плавающей запятой в C++ и сравнительные ограничения на размеры типов с плавающей запятой. Эти ограничения требуются стандартом C++ и не зависят от реализации Майкрософт. Абсолютный размер встроенных типов с плавающей запятой не указан в стандарте.

ТипСодержимое
floatТип float — это наименьший тип с плавающей запятой в C++.
doubledouble — это тип с плавающей запятой, размер которого больше или равен размеру типа float, но меньше или равен размеру типа long double
.
long doublelong double — это тип с плавающей запятой, размер которого больше или равен размеру типа double.

Для майкрософт. Представление long double и double идентично. long double Однако и double рассматриваются компилятором как отдельные типы. Компилятор Microsoft C++ использует 4- и 8-байтовые представления IEEE-754 с плавающей запятой. Дополнительные сведения см. в разделе Представление с плавающей запятой IEEE.

Целочисленные типы

Тип int является базовым целочисленным типом по умолчанию. Он может представлять все целые числа в диапазоне, относящегося к конкретной реализации.

Целочисленное представление со знаком может содержать как положительные, так и отрицательные значения. Он используется по умолчанию или при наличии ключевого слова модификатора signed . Ключевое unsigned слово модификатора указывает представление без знака , которое может содержать только неотрицательных значений.

Модификатор размера задает ширину используемого целочисленного представления в битах. Язык поддерживает shortмодификаторы , longи long long . Тип short должен быть не менее 16 бит в ширину. Тип long должен быть не менее 32 бит в ширину. Тип long long должен быть не менее 64 бит в ширину. Стандарт задает связь размера между целочисленными типами:

1 == sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long) <= sizeof(long long)

Реализация должна поддерживать как минимальные требования к размеру, так и отношение размера для каждого типа. Однако фактические размеры могут отличаться в разных реализациях. Дополнительные сведения о реализации для майкрософт см. в разделе Размеры встроенных типов .

Ключевое int слово может быть опущено, если signedуказаны модификаторы , unsignedили . Модификаторы и int тип, если они присутствуют, могут отображаться в любом порядке. Например, short unsigned и unsigned int short ссылаются на тот же тип.

Синонимы целочисленных типов

Следующие группы типов считаются синонимами компилятором:

  • short, short int, signed short, signed short int

  • unsigned short

    , unsigned short int

  • int, signed, signed int

  • unsigned, unsigned int

  • long, long int, signed long, signed long int

  • unsigned long, unsigned long int

  • long long, long long int, signed long long, signed long long int

  • unsigned long long, unsigned long long int

Типы целых чисел, относящиеся к корпорации Майкрософт

, включают типы определенной ширины __int8, __int16, __int32и __int64 . Эти типы могут использовать модификаторы signed и unsigned . Тип данных __int8 аналогичен типу char, __int16 — типу short, __int32 — типу int, а __int64 — типу long long.

Размеры встроенных типов

Большинство встроенных типов имеют размеры, определенные реализацией. В следующей таблице приведен объем хранилища, необходимый для встроенных типов в Microsoft C++. В частности,

long составляет 4 байта даже в 64-разрядных операционных системах.

ТипРазмер
bool, char, char8_t, unsigned char, signed char, __int81 байт
char16_t, __int16, short, unsigned short, wchar_t, __wchar_t2 байта
char32_t, float, __int32, int, unsigned int, long, unsigned long
4 байта
double, __int64, long double, long long, unsigned long long8 байт

Сводка по диапазонам значений каждого типа см. в разделе Диапазоны типов данных .

Дополнительные сведения о преобразовании типов см. в разделе Стандартные преобразования.

См. также раздел

Диапазоны типов данных

Типы данных float и double. Язык Си

Типы данных float и double. Язык Си — руководство для начинающих

ВикиЧтение

Язык Си — руководство для начинающих
Прата Стивен

Содержание

Типы данных float и double

     В большинстве проектов разработки программного обеспечения оказывается вполне достаточным использовать данные целых типов. Однако в программах вычислительного характера часто применяются числа с плавающей точкой. В языке Си такие данные описываются типом

float; они соответствуют типу real в Фортране и Паскале. Указанный подход, как вы могли заметить при внимательном чтении, позволяет представлять числа из гораздо более широкого диапазона, включая и десятичные дроби. Числа с плавающей точкой совершенно аналогичны числам в обычной алгебраической записи, используемой при работе с очень большими или малыми числами. Давайте рассмотрим ее подробнее.

     Алгебраическая запись числа представляет собой произведение некоторого десятичного числа на степень, основание которой равно десяти. Ниже приведено несколько примеров.

Число Алгебраическая запись для ввода запись в машину
1 000000000 = 1.0 ? 109 = 1.0e9 123000 = 1.23 ? 105 = 1.23е5 322.56 = 3.2256 ? 102 = 3.2256е2 0.000056 = 5.6 ? 10-5 = 5.6е-5

     В первом столбце числа изображены в обычной записи, во втором приведена соответствующая алгебраическая запись, а в третьем столбце числа показаны в том виде, в котором они обычно представляются при вводе в машину и при выводе из нее — с символом е, за которым следует показатель степени по основанию десять (порядок).

     Обычно для размещения в памяти числа с плавающей точкой отводится 32 бита — 8 бит для представления порядка и знака и 24 бита — для мантиссы (т. е. коэффициента при степени десяти). Важным фактом, который вам необходимо знать, является то, что такой способ дает возможность представлять числа с точностью до 6-7 десятичных цифр в диапазоне ±(10

-37 — 1038). Это может оказаться удобным, если вам понадобится обрабатывать числа того же порядка, что масса Солнца (2.0е30 кг) или заряд протона (1.6е-19 Кл). (Многим нравится использовать подобные числа.)

     Во многих ЭВМ предусматривается обработка данных типа double (вычислений с двойной точностью), когда для представления чисел используется удвоенное число битов, чаще всего 64. В некоторых машинах все 32 добавочных бита используются для хранения мантиссы. Это увеличивает число значащих цифр и уменьшает ошибку округления. В других машинах некоторое число битов из дополнительного набора используется для хранения большего порядка: это расширяет диапазон представления чисел.

     Другой способ определения данных типа double заключается в использовании ключевых слов long float.

  

Типы данных

Типы данных Приведенные в этой главе таблицы взяты непосредственно из оперативной справочной системы и представляют единую модель данных Windows (Windows Uniform Data Model). Определения типов можно найти в заголовочном файле BASETSD.H, входящем в состав интегрированной среды разработки

Типы данных 

Типы данных  В JScript поддерживаются шесть типов данных, главными из которых являются числа, строки, объекты и логические данные. Оставшиеся два типа — это null (пустой тип) и undefined (неопределенный

14.5.1 Типы данных

14.5.1 Типы данных Файл может содержать текст ASCII, EBCDIC или двоичный образ данных (существует еще тип, называемый локальным или логическим байтом и применяемый для компьютеров с размером байта в 11 бит). Текстовый файл может содержать обычный текст или текст, форматированный

20.10.3 Типы данных MIB

20.10.3 Типы данных MIB Причиной широкого распространения SNMP стало то, что проектировщики придерживались правила «Будь проще!»? Все данные MIB состоят из простых скалярных переменных, хотя отдельные части MIB могут быть логически организованы в таблицы.? Только небольшое число

Типы данных

Типы данных Несмотря на то, что типы данных подробно описаны в документации (см. [1, гл. 4]), необходимо рассмотреть ряд понятий, которые будут часто использоваться в последующих главах книги. Помимо изложения сведений общего характера будут рассмотрены также примеры

Типы данных

Типы данных Один из этапов проектирования базы данных заключается в объявлении типа каждого поля, что позволяет процессору базы данных эффективно сохранять и извлекать данные. ). Наименьшее положительное

Типы данных

Типы данных Многие языки программирования при объявлении переменной требуют указывать, какой тип данных будет ей присваиваться. Например, в языке Java кодint i = 15;объявит переменную целого типа int с именем i и присвоит ей значение 15. В этом случае тип данных ставится в

6.2 Float и Double

6.2 Float и Double Для выражений float могут выполняться действия арифметки с плавающей точкой одинарной точности. Преобразования меду числами одинарной и двойной точности выполняются настолько математически корректно, насколько позволяет

Типы данных

Типы данных Обзор типов Типы в PascalABC.NET подразделяются на простые, строковые, структурированные, типы указателей, процедурные типы и классы. К простым относятся целые и вещественные типы, логический, символьный, перечислимый и диапазонный тип.К структурированным типам

12.2. Типы баз данных

12.2. Типы баз данных Группу связанных между собой элементов данных называют обычно записью. Известны три основных типа организации данных и связей между ними: иерархический (в виде дерева), сетевой и реляционный.Иерархическая БДВ иерархической БД существует

6.2. Типы и структуры данных

6.2. Типы и структуры данных Под типом данных (data type) понимается множество величин, объединенных определенными признаками и совокупностью допустимых преобразований.Так, если в качестве объединяющего признака используется вид данных, то данные можно разделить на

5.2.4. Типы данных

5. 2.4. Типы данных Мы можем вводить в ячейки следующие данные: текст, числа, даты, также приложение Numbers предоставляет возможность добавлять флажки, ползунки и другие элементы управления. Аналогично MS Excel для выравнивания чисел, дат и текстовых данных в Numbers существуют

Разница между типами данных float и double в примере

В этой статье давайте поэкспериментируем с типами данных float и double. Перед этим позвольте мне объяснить диапазон этих типов данных.

. мощность +38.

 

Рисунок 2. Диапазон числа double

 

Диапазон значения числа double составляет от 2,3×10 в степени -308 до 1,7×10 в степени 308, а точность составляет до 15 знаков после запятой, а поскольку оно является двойным точность хранения, он занимает 8 байт в памяти. 9Рис. 3. Программа

Это действительное число, которое имеет целую часть, десятичную точку и дробную часть. Здесь я использовал тип данных float. Если я хочу напечатать это, я бы использовал %f и позволил мне напечатать это число. Код показан на рисунке 3.

В выводе программы вы можете видеть, что %f печатает 6 десятичных разрядов числа после запятой. Теперь результат правильный относительно 6 знаков после запятой.

 

И если вы хотите узнать, каково состояние оставшихся десятичных знаков, вы можете увеличить ширину вывода, указав здесь спецификатор ширины. Итак, я могу написать 0,9. Это все равно, что говорить print до 9 знаков после запятой.

В выводе видно, что теперь результат соответствует 9 знакам после запятой, но до 6 правилен, а остальные три неверны. Значит, есть потеря точности.

Рисунок 4. Использование %0.9f в операторе printf

 

Теперь измените тип данных на double ; вы получите лучшую точность. Вы можете напечатать до 15. Давайте напечатаем до 14 знаков после запятой и дадим здесь lf . Давайте использовать lf для двойного. Код показан на рис. 5.

В выводе видно, что вы получили лучшую точность. Результат правильный. Итак, результат идентичен этой дробной части.

Рисунок 5. Программа

 

Теперь мы можем распечатать этот вывод в экспоненциальном представлении. Для этого вам нужно использовать %e здесь вместо %f . Итак, %e напечатает этот результат в экспоненциальном представлении.

Рисунок 6. Распечатайте результат в экспоненциальном представлении

 

Здесь мы видим, что вы получили результат в экспоненциальном представлении. Значение e+001 равно 10 в степени 1. 

 

Теперь вы также можете заставить printf печатать с точностью до 2 знаков после запятой. Для этого я бы использовал 0,2 здесь.

Рисунок 7. Печать с 2 знаками после запятой

 

Вы можете видеть, что вывод печатается с точностью до 2 знаков после запятой. Здесь 8 раундов это ближайшее число. Вот почему он напечатал 45,79.. И посмотрите на научную нотацию; это 4,58 в 10 в степени 1. Итак, это даст вам 45,8.

 

Теперь давайте изменим эту программу, чтобы она хранила заряд электрона. Создадим переменный заряд Е, а заряд электрона это число -1,60217662 х 10-19; здесь также можно использовать знак минус. Вы также можете сохранить число в экспоненциальном представлении в переменных типа данных float или double. Но нельзя так писать 10-19. Что вам нужно сделать здесь, это удалить это и написать e-19. Вот как вы храните число с экспоненциальной записью. Это как 10 в степени -19.

Давайте напечатаем это число. Позвольте мне напечатать, используя %f и %e, как показано на рисунке 8.

Рисунок 8. Печать вывода в экспоненциальном представлении

 

Во-первых, в первом выводе было напечатано 0. Это имеет смысл, потому что это очень маленькое число . И посмотрите на экспоненциальное представление, оно напечатано почти правильно, а дробная часть напечатана с точностью до 6 знаков после запятой. Вот почему эта 6 стала 7 здесь. Это означает, что вы не можете использовать здесь переменную с плавающей запятой для хранения точного значения заряда электрона, потому что здесь есть потеря точности.

 

Здесь вам нужно показать данные с точностью до 8 знаков после запятой. Для этого вы можете указать 0,8 (рис. 9).

Рисунок 9. Упоминание спецификаторов ширины %0.8f и %0.8e

 

Как видно, результат вывода не улучшится. Вот 602176, значит показывает 60. Так что результат не улучшится.

Вот почему имеет смысл использовать здесь двойное число, потому что двойное число дает вам точность до 15 знаков после запятой. Давайте использовать double здесь и спецификатор формата lf и le , и теперь мы можем видеть более высокую точность для этой программы.

Рисунок 10. Использование двойного числа

 

В выходных данных вы можете видеть, что дробная часть точно такая же, как и входная. Причина этого в double, вы можете получить точность до 15 знаков после запятой.

Когда вы пытаетесь напечатать в формате %lf, вы можете увидеть, что он печатает все нули, потому что это очень маленькое число.

Итак, если вы хотите получить вывод, давайте введем больше знаков после запятой; позвольте мне дать% 0,28lf.

Рисунок 11. Используйте спецификатор ширины 0,28lf

 

Теперь на выходе печатается дробная часть относительно 28 знаков после запятой.

 

Курсы FastBit Embedded Brain Academy

Нажмите здесь: https://fastbitlab.com/course1

 

Типы данных — NumPy v1.

24 Manual

См. также

Объекты типа данных

Типы массивов и преобразования между типами

NumPy поддерживает гораздо большее разнообразие числовых типов, чем Python. В этом разделе показано, какие из них доступны, и как изменить тип данных массива.

Поддерживаемые примитивные типы тесно связаны с типами в C:

Тип Numpy

Тип C

Описание

numpy.bool_

логический

Логическое значение (Истина или Ложь), сохраненное в виде байта

numpy.byte

знаковый символ

Определяется платформой

numpy.ubyte

беззнаковый символ

Определяется платформой

numpy. short

короткий

Определяется платформой

numpy.ushort

короткий без знака

Определяется платформой

numpy.intc

внутр.

Определяется платформой

numpy.uintc

целое число без знака

Определяется платформой

numpy.int_

длинный

Определяется платформой

numpy.uint

длинный без знака

Определяется платформой

numpy.longlong

длинный длинный

Определяется платформой

numpy. ulonglong

без знака длинный длинный

Определяется платформой

numpy.half / numpy.float16

Поплавок половинной точности: знаковый бит, 5-битная экспонента, 10-битная мантисса

numpy.single

поплавок

Определяемый платформой поплавок одинарной точности: обычно знаковый бит, 8-битная экспонента, 23-битная мантисса

numpy.double

двойной

Определяемое платформой число с плавающей запятой двойной точности: обычно знаковый бит, 11-битная экспонента, 52-битная мантисса.

numpy.longdouble

длинный двойной

Поплавок повышенной точности, определяемый платформой

numpy. csingle

поплавковый комплекс

Комплексное число, представленное двумя числами с плавающей запятой одинарной точности (действительная и мнимая составляющие)

numpy.cdouble

двухместный комплекс

Комплексное число, представленное двумя числами с двойной точностью (действительная и мнимая составляющие).

numpy.clongdouble

длинный двойной комплекс

Комплексное число, представленное двумя вещественными числами повышенной точности (действительная и мнимая составляющие).

Поскольку многие из них имеют определения, зависящие от платформы, набор фиксированных предоставляются псевдонимы (см. Размерные псевдонимы).

Числовые типы

NumPy являются экземплярами объектов dtype (тип данных), каждый обладающие уникальными характеристиками. После того, как вы импортировали NumPy с помощью >>> импортировать numpy как np dtypes доступны как np.bool_ , np.float32 и т. д.

Расширенные типы, не перечисленные выше, изучаются в раздел Структурированные массивы.

Существует 5 основных числовых типов, представляющих логические значения (bool), целые числа (int), целые числа без знака (uint), числа с плавающей запятой (float) и комплексные числа. Те, что с цифрами в их названии указывают разрядность типа (т.е. сколько бит необходимо для представления одного значения в памяти). Некоторые типы, такие как в и intp , имеют разные размеры битов в зависимости от платформы (например, 32-разрядная по сравнению с 64-битными машинами). Это следует учитывать при сопряжении с низкоуровневым кодом (таким как C или Fortran), где адресована необработанная память.

Типы данных могут использоваться как функции для преобразования чисел Python в скаляры массивов. (объяснение см. в разделе скалярных массивов), последовательности чисел Python для массивов этого типа или в качестве аргументов для ключевого слова dtype, что многие numpy функции или методы принимают. Некоторые примеры:

 >>> х = np.float32 (1.0)
>>> х
1,0
>>> у = np.int_([1,2,4])
>>> г
массив([1, 2, 4])
>>> z = np.arange(3, dtype=np.uint8)
>>> г
массив ([0, 1, 2], dtype = uint8)
 

Типы массивов также могут обозначаться кодами символов, в основном для сохранения обратная совместимость со старыми пакетами, такими как Numeric. Некоторый документация может по-прежнему ссылаться на них, например:

 >>> np.array([1, 2, 3], dtype='f')
массив([1., 2., 3.], dtype=float32)
 

Вместо этого мы рекомендуем использовать объекты dtype.

Чтобы преобразовать тип массива, используйте метод .astype() (предпочтительно) или сам тип как функция. Например:

 >>> z.astype(с плавающей запятой)
массив([0., 1., 2.])
>>> np.int8(z)
массив ([0, 1, 2], dtype = int8)
 

Обратите внимание, что выше мы используем плавающий объект Python в качестве dtype. NumPy знает что int относится к np.int_ , bool означает нп.bool_ , что float — это np.float_ , а комплекс — это np.complex_ . Другие типы данных не имеют эквивалентов Python.

Чтобы определить тип массива, посмотрите атрибут dtype:

 >>> z.dtype
dtype('uint8')
 

объектов dtype также содержат информацию о типе, например, его разрядность. и его порядок байтов. Тип данных также может косвенно использоваться для запроса свойства типа, например, является ли он целым числом:

 >>> d = np.dtype(int)
>>> д
dtype('int32')
>>> np.issubdtype(d, np.integer)
Истинный
>>> np.issubdtype(d, np.плавающий)
ЛОЖЬ
 

Массив скаляров

NumPy обычно возвращает элементы массивов как скаляры массива (скаляр со связанным dtype). Скаляры массива отличаются от скаляров Python, но по большей части они могут использоваться взаимозаменяемо (основной исключение составляют версии Python старше v2. x, где целочисленный массив скаляры не могут выступать в качестве индексов для списков и кортежей). Есть некоторые исключения, например, когда код требует очень специфических атрибутов скаляра или когда он специально проверяет, является ли значение скаляром Python. В целом, проблемы легко устраняются явным преобразованием скаляров массивов в скаляры Python, используя соответствующую функцию типа Python (например, int , float , комплекс , str , unicode ).

Основное преимущество использования скаляров-массивов состоит в том, что они сохраняют тип массива (Python может не иметь соответствующего скалярного типа доступный, напр. int16 ). Таким образом, использование скаляров массивов обеспечивает одинаковое поведение между массивами и скалярами, независимо от того, значение находится внутри массива или нет. Скаляры NumPy также имеют много одинаковых массивы методов.

Ошибки переполнения

Фиксированный размер числовых типов NumPy может вызвать ошибки переполнения, когда значение требует больше памяти, чем доступно в типе данных. Например, numpy.power правильно оценивает 100 ** 8 для 64-битных целых чисел, но дает 1874919424 (неверно) для 32-битного целого числа.

 >>> np.power(100, 8, dtype=np.int64)
10000000000000000
>>> np.power(100, 8, dtype=np.int32)
1874919424
 

Поведение целочисленных типов NumPy и Python значительно различается для целые переполнения и могут сбить с толку пользователей, ожидающих, что целые числа NumPy будут вести себя похоже на Python в . В отличие от NumPy, размер int Python составляет гибкий. Это означает, что целые числа Python могут расширяться для размещения любых целых и не будет переливаться.

NumPy предоставляет numpy.iinfo и numpy.finfo для проверки минимальные или максимальные значения целых чисел NumPy и значений с плавающей запятой соответственно

 >>> np.iinfo(int) # Границы целого числа по умолчанию в этой системе.
iinfo(мин=-9223372036854775808, макс=9223372036854775807, dtype=int64)
>>> np. iinfo(np.int32) # Границы 32-битного целого числа
iinfo(мин=-2147483648, макс=2147483647, dtype=int32)
>>> np.iinfo(np.int64) # Границы 64-битного целого числа
инфо(мин=-9223372036854775808, макс=9223372036854775807, dtype=int64)
 

Если 64-битные целые числа все еще слишком малы, результат может быть приведен к число с плавающей запятой. Числа с плавающей запятой предлагают большее, но неточное, диапазон возможных значений.

 >>> np.power(100, 100, dtype=np.int64) # Неверно даже с 64-битным целым числом
0
>>> np.power(100, 100, dtype=np.float64)
1e+200
 

Повышенная точность

Числа с плавающей запятой Python обычно представляют собой 64-битные числа с плавающей запятой, почти эквивалентно нп.поплавок64 . В некоторых нестандартных ситуациях может быть полезно использовать числа с плавающей запятой с большей точностью. Будь то возможно в numpy зависит от оборудования и от разработки среда: в частности, машины x86 обеспечивают аппаратные операции с плавающей запятой. с 80-битной точностью, и хотя большинство компиляторов C предоставляют это как long double Тип , MSVC (стандарт для сборок Windows) делает long double идентично double (64 бита). NumPy делает компилятор long double доступен как np.longdouble np.clongdouble для комплексных чисел). Вы можете узнать, какой у вас numpy предоставляет np.finfo(np.longdouble) .

NumPy не предоставляет dtype с большей точностью, чем C длинный двойной ; в частности, 128-битная четырехкратная точность IEEE. тип данных ( REAL*16 ФОРТРАНА) недоступен.

Для эффективного выравнивания памяти обычно сохраняется np.longdouble дополняется нулевыми битами, либо до 96 или 128 бит. Что эффективнее зависит от оборудования и среды разработки; обычно на 32-битной системах они дополняются до 96 бит, а в 64-битных системах они обычно дополняется до 128 бит. np.

Оставить комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *