Double в си шарп

Double в си шарп

Double – 64-разрядная переменная с плавающей запятой

Тип double — это основной тип данных, который используется для переменных, содержащих числа с дробной частью. Double используется в C , C++ , C# и других языках программирования. Он может представлять как дробные, так и целые значения длинной до 15 знаков.

Применение DOUBLE

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

DOUBLE, FLOAT И INT

Другие числовые типы данных — это float и int . Типы данных double и float похожи, но отличаются точностью и диапазоном:

  • Float — 32-битный тип, вмещающий семь цифр. Его диапазон — примерно от 1.5 х 215; 10 -45 до 3.4 х 10 38 ;
  • Double — 64-битный тип, вмещающий 15 или 16 цифр с диапазоном от 5.0 х 10 345 to 1.7 х 10 308 .

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

Данная публикация представляет собой перевод статьи « Definition of Double in C, C++ and C# » , подготовленной дружной командой проекта Интернет-технологии.ру

Как и во многих языках программирования, в C# есть своя система типов данных, которая используется для создания переменных. Тип данных определяет внутреннее представление данных, множество значений, которые может принимать объект, а также допустимые действия, которые можно применять над объектом.

В языке C# есть следующие примитивные типы данных:

bool : хранит значение true или false (логические литералы). Представлен системным типом System.Boolean

byte : хранит целое число от 0 до 255 и занимает 1 байт. Представлен системным типом System.Byte

sbyte : хранит целое число от -128 до 127 и занимает 1 байт. Представлен системным типом System.SByte

short : хранит целое число от -32768 до 32767 и занимает 2 байта. Представлен системным типом System.Int16

ushort : хранит целое число от 0 до 65535 и занимает 2 байта. Представлен системным типом System.UInt16

int : хранит целое число от -2147483648 до 2147483647 и занимает 4 байта. Представлен системным типом System.Int32 . Все целочисленные литералы по умолчанию представляют значения типа int:

uint : хранит целое число от 0 до 4294967295 и занимает 4 байта. Представлен системным типом System.UInt32

long : хранит целое число от –9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 и занимает 8 байт. Представлен системным типом System.Int64

ulong : хранит целое число от 0 до 18 446 744 073 709 551 615 и занимает 8 байт. Представлен системным типом System.UInt64

float : хранит число с плавающей точкой от -3.4*10 38 до 3.4*10 38 и занимает 4 байта. Представлен системным типом System.Single

double : хранит число с плавающей точкой от ±5.0*10 -324 до ±1.7*10 308 и занимает 8 байта. Представлен системным типом System.Double

decimal : хранит десятичное дробное число. Если употребляется без десятичной запятой, имеет значение от ±1.0*10 -28 до ±7.9228*10 28 , может хранить 28 знаков после запятой и занимает 16 байт. Представлен системным типом System.Decimal

Читайте также:  Megafon login 2 телефон

char : хранит одиночный символ в кодировке Unicode и занимает 2 байта. Представлен системным типом System.Char . Этому типу соответствуют символьные литералы:

string : хранит набор символов Unicode. Представлен системным типом System.String . Этому типу соответствуют символьные литералы.

object : может хранить значение любого типа данных и занимает 4 байта на 32-разрядной платформе и 8 байт на 64-разрядной платформе. Представлен системным типом System.Object , который является базовым для всех других типов и классов .NET.

Например, определим несколько переменных разных типов и выведем их значения на консоль:

Для вывода данных на консоль здесь применяется интерполяция: перед строкой ставится знак $ и после этого мы можем вводить в строку в фигурных скобках значения переменных. Консольный вывод программы:

Использование суффиксов

При присвоении значений надо иметь в виду следующую тонкость: все вещественные литералы рассматриваются как значения типа double . И чтобы указать, что дробное число представляет тип float или тип decimal , необходимо к литералу добавлять суффикс: F/f — для float и M/m — для decimal.

Подобным образом все целочисленные литералы рассматриваются как значения типа int . Чтобы явным образом указать, что целочисленный литерал представляет значение типа uint, надо использовать суффикс U/u , для типа long — суффикс L/l , а для типа ulong — суффикс UL/ul :

Использование системных типов

Выше при перечислении всех базовых типов данных для каждого упоминался системный тип. Потому что название встроенного типа по сути представляет собой сокращенное обозначение системного типа. Например, следующие переменные будут эквивалентны по типу:

Неявная типизация

Ранее мы явным образом указывали тип переменных, например, int x; . И компилятор при запуске уже знал, что x хранит целочисленное значение.

Однако мы можем использовать и модель неявной типизации:

Для неявной типизации вместо названия типа данных используется ключевое слово var . Затем уже при компиляции компилятор сам выводит тип данных исходя из присвоенного значения. В примере выше использовалось выражение Console.WriteLine(c.GetType().ToString()); , которое позволяет нам узнать выведенный тип переменной с. Так как по умолчанию все целочисленные значения рассматриваются как значения типа int , то поэтому в итоге переменная c будет иметь тип int или System.Int32

Эти переменные подобны обычным, однако они имеют некоторые ограничения.

Во-первых, мы не можем сначала объявить неявно типизируемую переменную, а затем инициализировать:

Во-вторых, мы не можем указать в качестве значения неявно типизируемой переменной null :

Так как значение null, то компилятор не сможет вывести тип данных.

double или decimal

Из выше перечисленного списка типов данных очевидно, что если мы хотим использовать в программе числа до 256, то для их хранения мы можем использоват переменные типа byte . При использовании больших значений мы можем взять тип short, int, long. То же самое для дробных чисел — для обычных дробных чисел можно взять тип float, для очень больших дробных чисел — тип double. Тип decimal здесь стоит особняком в том плане, что несмотря на большую разрядность по сравнению с типом double, тип double может хранить большее значение. Однако значение decimal может содержать до 28 знаков после запятой, тогда как значение типа double — 15-16 знаков после запятой.

Decimal чаще находит применение в финансовых вычислениях, тогда как double — в математических операциях. Общие различия между этими двумя типами можно выразить следующей таблицей:

Читайте также:  H61m vs драйвера audio

Типы с плавающей запятой — это подмножество простых типов. Они могут инициализироваться литералами. The floating-point types are a subset of the simple types and can be initialized with literals. Все типы с плавающей запятой также являются типами значений. All floating-point types are also value types. Все числовые типы с плавающей запятой поддерживают арифметические операторы, а также операторы сравнения и равенства. All floating-point numeric types support arithmetic, comparison, and equality operators.

Характеристики типов с плавающей запятой Characteristics of the floating-point types

C# поддерживает следующие предварительно определенные типы с плавающей запятой: C# supports the following predefined floating-point types:

Ключевое слово или тип C# C# type/keyword Приблизительный диапазон значений Approximate range Точность Precision Размер Size Тип .NET .NET type
float От ±1,5 x 10 −45 до ±3,4 x 10 38 ±1.5 x 10 −45 to ±3.4 x 10 38 6–9 цифр

6-9 digits

4 байта 4 bytes System.Single double от ±5,0 × 10 −324 до ±1,7 × 10 308 ±5.0 × 10 −324 to ±1.7 × 10 308 15–17 цифр

15-17 digits

8 байт 8 bytes System.Double decimal от ±1,0 x 10 -28 до ±7,9228 x 10 28 ±1.0 x 10 -28 to ±7.9228 x 10 28 28-29 знаков 28-29 digits 16 байт 16 bytes System.Decimal

В приведенной выше таблице каждый тип ключевого слова C# из крайнего левого столбца является псевдонимом для соответствующего типа .NET. In the preceding table, each C# type keyword from the leftmost column is an alias for the corresponding .NET type. Они взаимозаменяемые. They are interchangeable. Например, следующие объявления объявляют переменные одного типа: For example, the following declarations declare variables of the same type:

По умолчанию все типы с плавающей запятой имеют значение 0 . The default value of each floating-point type is zero, 0 . Все типы с плавающей запятой имеют константы MinValue и MaxValue с минимальным и максимальными итоговыми значениями этого типа. Each of the floating-point types has the MinValue and MaxValue constants that provide the minimum and maximum finite value of that type. Типы float и double также предоставляют константы, обозначающие бесконечные и нечисловые значения. The float and double types also provide constants that represent not-a-number and infinity values. Например, тип double предоставляет следующие константы: Double.NaN, Double.NegativeInfinity и Double.PositiveInfinity. For example, the double type provides the following constants: Double.NaN, Double.NegativeInfinity, and Double.PositiveInfinity.

Так как тип decimal характеризуется более высокой точностью и меньшим диапазоном, чем float и double , он подходит для финансовых расчетов. Because the decimal type has more precision and a smaller range than both float and double , it’s appropriate for financial and monetary calculations.

В одном и том же выражении можно сочетать и целочисленные типы, и типы с плавающей запятой. You can mix integral types and floating-point types in an expression. В этом случае целочисленные типы преобразуются в типы с плавающей запятой. In this case, the integral types are converted to floating-point types. Выражение вычисляется по следующим правилам: The evaluation of the expression is performed according to the following rules:

  • Если одним из типов с плавающей запятой является double , выражение оценивается как double или bool в реляционных сравнениях или сравнениях на равенство. If one of the floating-point types is double , the expression evaluates to double , or to bool in relational and equality comparisons.
  • Если в выражении нет типа double , оно оценивается как float или bool в реляционных сравнениях или сравнениях на равенство. If there is no double type in the expression, the expression evaluates to float , or to bool in relational and equality comparisons.
Читайте также:  Asus m4a88td v evo usb3 драйвера

Выражение с плавающей запятой может содержать следующие наборы значений: A floating-point expression can contain the following sets of values:

  • Положительный и отрицательный ноль Positive and negative zero
  • Положительная и отрицательная бесконечность Positive and negative infinity
  • Нечисловое значение (NaN) Not-a-Number value (NaN)
  • Конечный набор ненулевых значений The finite set of nonzero values

Дополнительные сведения об этих значениях см. в документе "Стандарт IEEE для двоичной арифметики с плавающей запятой" на веб-сайте IEEE. For more information about these values, see IEEE Standard for Binary Floating-Point Arithmetic, available on the IEEE website.

Можно использовать строки стандартных числовых форматов или строки пользовательских числовых форматов для форматирования значения с плавающей запятой. You can use either standard numeric format strings or custom numeric format strings to format a floating-point value.

Вещественные литералы Real literals

Тип реального литерала определяется его суффиксом следующим образом: The type of a real literal is determined by its suffix as follows:

  • Литерал без суффикса или с суффиксом d или D имеет тип double . The literal without suffix or with the d or D suffix is of type double
  • Литерал с суффиксом f или F имеет тип float . The literal with the f or F suffix is of type float
  • Литерал с суффиксом m или M имеет тип decimal . The literal with the m or M suffix is of type decimal

В приведенном ниже коде показан пример каждого из них. The following code demonstrates an example of each:

В предыдущем примере также показано использование _ в качестве цифрового разделителя, который поддерживается, начиная с версии C# 7.0. The preceding example also shows the use of _ as a digit separator, which is supported starting with C# 7.0. Цифровой разделитель можно использовать со всеми видами числовых литералов. You can use the digit separator with all kinds of numeric literals.

Можно также использовать экспоненциальное представление, то есть указать экспоненту вещественного литерала, как показано в следующем примере: You also can use scientific notation, that is, specify an exponent part of a real literal, as the following example shows:

Преобразования Conversions

Существует только одно неявное преобразование между числовыми типами с плавающей запятой: из float в double . There is only one implicit conversion between floating-point numeric types: from float to double . Однако можно преобразовать любой тип с плавающей запятой в любой другой тип с плавающей запятой с помощьюявного приведения. However, you can convert any floating-point type to any other floating-point type with the explicit cast. Для получения дополнительной информации см. статью Встроенные числовые преобразования. For more information, see Built-in numeric conversions.

Спецификация языка C# C# language specification

Дополнительные сведения см. в следующих разделах статьи Спецификация языка C#: For more information, see the following sections of the C# language specification:

Ссылка на основную публикацию
Cpu amd fx 8300
Описание AMD начала продажи AMD FX-8300 в октябре 2012. Это десктопный процессор на архитектуре Vishera, в первую очередь рассчитанный на...
Battery remaining time в биосе что это
Вчера я писал о ноутбуке Samsung серии 300E5 (http://ammo1.livejournal.com/262248.html). В этой серии применён очень простой и остроумный способ сохранения жизни...
Battle eye не запускается
К любому онлайн-проекту нужен античит, иначе все баталии превратятся в вакханалию бесконечных патронов и бессмертных бойцов. Но иногда этот самый...
Cpu hash что это
AIDA64 имеет множество тестов, которые возможно применять для оценивания состояния разных составляющих компьютера или техники в целом. Это искусственные тесты,...
Adblock detector