Числовые литералы

Ü поддерживает числовые литералы в различных форматах. Существуют два вида числовых литералов - целочисленные и с плавающей точкой.

Числовые литералы с плавающей точкой

Числовые литералы с плавающей точкой это десятичные числа, в записи которых присутствует дробная точка и/или экспонента.

У числовых литералов с плавающей точкой может быть указан суффикс типа. Поддерживаемые суффиксы это f и f32 для типа f32, f64 для типа f64. Если суффикс числового литерала с плавающей точкой не указан, считается, что он имеет тип f64.

Примеры числовых литералов с плавающей точкой:

var f64 a = 0.0; // Имеется дробная точка.
var f64 b = 1234.56; // Имеются несколько целых и дробных разрядов.
var f32 c = 87.33f; // Имеется суффикс "f".
var f32 d = 0.000253f; // Присутствуют начальные нули в дробной части.
var f64 e = 67e7; // Имеется экспонента.
var f64 f = 3.5e-14; // Имеются дробная точка и негативная экспонента.
var f32 g = 12323.7f32; // Присутствует суффикс "f32".
var f64 h = 908754.24556f64; // Присутствует суффикс "f64".

Целые числовые литералы

Десятичные числа без дробной точки и экспоненты считаются целочисленными литералами.

Кроме того поддерживаются недесятичные числовые литералы:

  • основание 2. Литерал начинается с префикса 0b. Доступны цифры 0-1.

  • основание 8. Литерал начинается с префикса 0o. Доступны цифры 0-7.

  • основание 16. Литерал начинается с префикса 0x. Доступны цифры 0-9 и a-f либо A-F.

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

Целочисленные литералы со значением больше 18446744073709551615 (264 - 1) не поддерживаются.

У целочисленных литералов может быть указан суффикс типа. Указание суффикса равного имени одного из встроенных целочисленных типов означает, что этот числовой литерал имеет этот тип. Кроме того существуют суффиксы u для типа u32 и s для типа size_type. Если суффикс целочисленного литерала не указан, считается, что он имеет тип i32 (если литерал в него умещается), i64 или i128.

Примеры целочисленных литералов:

var i32 a = 7; // Десятичное число без суффикса - имеет тип "i32".
var i32 b = 644; // Несколько десятичных разрядов.
var u32 c = 0u; // Суффикс "u" для "u32".
var u64 d = 0b1100101101101110110111011100u64; // Двоичное число с суффиксом "u64".
var i8 f = 0x3ei8; // Шестнадцатеричное число с суффиксом "u8".
var u16 g = 0o74u16; // Восьмеричное число с суффиксом "u16".
var i64 h = 0x868E5B7F; // Шестнадцатеричное число, слишком большое, чтобы вместиться в "i32", поэтому оно имеет тип "i64".
var i128 i = 17446748073702551613; // Десятичное число, слишком большое, чтобы вместиться в "i64", поэтому оно имеет тип "i128".
var size_type j = 1234s; // Десятичное число с суффиксом "s".
var i32 k = 0x67ab4e; // Шестнадцатеричное число без суффикса - имеет тип "i32".