Основы Swift / 2.8. Числовые литералы


Видео


Что такое литерал?
Во многих учебниках литералы отождествляются с константой или символьной константой, и доля правды в этом есть: литералы не могут быть изменены никоим образом. Кроме того литерал может быть использован там, где используется константа. С другой стороны, в момент написания в коде литерал не имеет типа. Поэтому просто будем называть литералом явное значение, записываемое в Вашем коде.
Внимание! Орки атакуют!
Данная глава предполагает наличие у Вас знаний систем счислений. Соответствующий материал представлен в курсе по базовым основам информатики. Если материал в данной главе покажется Вам скучным, то Вы можете пропустить её и вернуться позднее, так как далеко не всё из неё пригодится Вам в ближайшее время при изучении Swift.
Числовые литералы
Целочисленные литералы могут быть записаны в следующем виде
  • Десятичное число - без префикса
  • Двоичное число - с префиксом 0b
  • Восьмеричное число - с префиксом 0o
  • Шестнадцетиричное число - с префиксом 0x
Все из этих целочисленных литералов имеют десятичное значение 17:
@{2.8\1}
                    
let decimalInteger = 17
let binaryInteger = 0b10001
let octalInteger = 0o21
let hexadecimalInteger = 0x11
                    
                
Литералы для вещественных чисел
Литералы с плавающей запятой могут быть как десятичными (без префикса) или шестнадцатиричными (с префиксом 0x). Они всегда должны иметь число по обе стороны от дробного разделителя. Десятичные дробные могут также иметь необязательную экспоненту, записываемую через прописную или строчную e; шестнадцетиричные дробные числа должны иметь экспоненту, выражаемую через прописную или строчную p.

Для десятичных чисел с экспонентой exp, базовое число умножается на 10 в степени exp:
  • 1.25e2 означает 1.25 x 10^2 или 125.0.
  • 1.25e-2 означает 1.25 x 10^-2 или 0.0125.
Для шестнадцатиричных чисел с экспонентой exp базовое число умножается на 2^exp:
  • 0xFp2 значит 15 x 2^2 или 60.0.
  • 0xFp-2 значит 15 x 2^-2 или 3.75.
Все эти литералы с плавающей точкой имеют значение 12.1875:
@{2.8\2}
                    
let decimalDouble = 12.1875
let exponentDouble = 1.21875e1
let hexadicimialDouble = 0xC.3p0
                    
                
Форматирование числовых литералов
Числовые литералы могут содержать дополнительное форматирование для повышения их читабельности. И целые, и вещественные числа могут быть дополнены слева лидирующими нулями и содержать нижнее подчёркивание. Форматирование не меняет значение числового литерала:
@{2.8\3}
                    
let paddedDouble = 000123.456
let oneMillion = 1_000_000
let justOverOneMillion = 1_000_000.000_000_1