Вещественные числа
Вещественные числа хранятся в памяти в так называемом экспоненциальном формате M * 2E
. При этом часть бит выделяется на хранение мантиссы M
(она находится в ограниченном диапазоне, обычно от 0.5 до 1), а другая часть бит — на хранение порядка E
. Как мантисса, так и порядок хранятся в двоичной системе счисления, причём один бит всегда выделяется под знак.
В Котлине имеется два вещественных типа. Один из них, уже известный нам Double, занимает в памяти восемь байт. При этом 53 бита выделяется на мантиссу, а 11 бит на порядок. Более короткий тип Float занимает четыре байта: 24 бита на мантиссу и 8 бит на порядок.
Вещественные литералы по умолчанию имеют тип Double. Для того, чтобы создать литерал типа Float, необходимо использовать суффикс F
:
val f1: Float = 1.0 // Error! val f2: Float = 1.0F // OK!
Тип Double является рекомендуемым для хранения вещественных чисел. Тип Float следует использовать, если чисел требуется много, а его точности достаточно.
Символы
Символы в Котлине используют тип Char и занимают в памяти два байта. Вместо символа в памяти хранится его код — номер данного символа в таблице кодировки Юникод. Тип Char поддерживает только символы из так называемого базового многоязыкового диапазона (Basic Multilingual Plane), номера которых находятся в интервале от 0 до 216 — 1. Дополнительные символы с номерами более 216 — 1 могут быть использованы следующим образом:
- для хранения кода символа может быть использован тип Int;
- для представления такого символа внутри строки используются два элемента типа Char, идущих подряд.
Напомним, что символьные константы в Котлине записываются в одинарных кавычках. Для представления специальных символов используется экранирование, например:
'\t'
— табуляция;'\n'
— новая строка;'\r'
— возврат каретки (этот и предыдущий символ остались от эпохи пишущих машинок, которым, чтобы начать вывод с новой строки, было необходимо выполнить две операции — возврат каретки к началу строки и перевод каретки на новую строку);'\''
— одинарная кавычка;'\"'
— двойная кавычка;'\\'
— обратный слэш;'\$'
— доллар.
Символы, отсутствующие на клавиатуре, могут быть также заданы с помощью шестнадцатеричного номера в таблице Юникод, например, '\uFF00'
— символ с номером FF00
.