Вещественные числа
Вещественные числа хранятся в памяти в так называемом экспоненциальном формате 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.