Упражнение. Обнаружение типов с плавающей запятой
- 8 мин
В этом упражнении вы работаете с типами данных с плавающей запятой, чтобы узнать о нюансах различий между каждым типом данных.
Плавающая точка — это простой тип значения, представляющий числа справа от десятичного разряда. В отличие от целочисленных типов, типы с плавающей запятой, помимо максимального и минимального значений, имеют и другие характеристики.
Оценка типов с плавающей запятой
Во-первых, необходимо учитывать цифры точности каждого типа. Точность — это количество мест значений, хранящихся после десятичной запятой.
Во-вторых, необходимо учитывать способ хранения значений и влияние на точность значения. Например, float
и double
значения хранятся внутри двоичного (базового 2) формата, а decimal
хранятся в десятичном (базовом 10) формате. Почему это важно?
Результаты математических операций с двоичными значениями с плавающей запятой могут удивить вас, если вы привыкли к десятичным вычислениям (с основанием 10). Результат такой операции зачастую является приближением к реальному значению. Поэтому и double
полезны, float
так как большие числа могут храниться с помощью небольшого объема памяти. Однако и double
следует использовать только в том случае, float
если приближение полезно. Например, будучи несколько тысяч выключается при вычислении гальбока снежного шара в видеоигре достаточно близко.
Если требуется более точный результат, следует использовать decimal
. Каждое значение типа decimal
занимает сравнительно много памяти, однако математические операции дают более точные результаты. Таким образом, decimal
следует использовать при работе с финансовыми данными и в других случаях, когда требуется точный результат вычисления.
Использование свойств MinValue и MaxValue для каждого подписанного типа float
Удалите или используйте оператор
//
строковый комментарий, чтобы закомментировать весь код из предыдущих упражнений.Чтобы просмотреть диапазоны значений для различных типов данных, обновите код в редакторе Visual Studio Code следующим образом:
Console.WriteLine("");
Console.WriteLine("Floating point types:");
Console.WriteLine($"float : {float.MinValue} to {float.MaxValue} (with ~6-9 digits of precision)");
Console.WriteLine($"double : {double.MinValue} to {double.MaxValue} (with ~15-17 digits of precision)");
Console.WriteLine($"decimal: {decimal.MinValue} to {decimal.MaxValue} (with 28-29 digits of precision)");
В меню "Файл Visual Studio Code" нажмите кнопку "Сохранить".
Перед созданием или выполнением кода необходимо сохранить файл Program.cs.
На панели обозревателя откройте терминал в папке TestProject, щелкните правой кнопкой мыши TestProject и выберите "Открыть в интегрированном терминале".
Панель терминала должна открыться и должна содержать командную строку, показывающую, что терминал открыт для расположения папки TestProject.
В командной строке терминала, чтобы запустить код, введите dotnet run и нажмите клавишу ВВОД.
Если появится сообщение "Не удалось найти проект для запуска", убедитесь, что в командной строке терминала отображается ожидаемое расположение папки TestProject. Например:
C:\Users\someuser\Desktop\csharpprojects\TestProject>
Должен появиться следующий результат:
Floating point types: float : -3.402823E+38 to 3.402823E+38 (with ~6-9 digits of precision) double : -1.79769313486232E+308 to 1.79769313486232E+308 (with ~15-17 digits of precision) decimal: -79228162514264337593543950335 to 79228162514264337593543950335 (with 28-29 digits of precision)
Как видно, float
и double
используйте нотацию, отличную от используемой decimal
для представления его самых больших и наименьших возможных значений. Что означает эта нотация?
Расшифровка больших значений с плавающей запятой
Так как типы с плавающей запятой могут содержать большие числа с точностью, их значения можно представить с помощью нотации E, которая является формой научной нотации, которая означает "время 10 поднято до власти". Таким образом, значением 5E+2
будет значение 500, так как это эквивалент 5 * 10^2 или 5 x 102.
Кратко
- Тип с плавающей запятой — это простой тип значения для хранения дробных чисел.
- При выборе подходящего типа с плавающей запятой необходимо учитывать не только возможное максимальное и минимальное значения. Также следует учесть количество возможных значений после десятичной запятой, способ хранения чисел и его влияние на результат математических операций.
- Особо большие значения с плавающей запятой могут иногда выражаться экспоненциальной записью.
- Способ обработки значений типа
decimal
и значений типовfloat
иdouble
компилятором и средой выполнения существенно различается. В первую очередь это влияет на точность математических операций.