Julia поддерживает три формы числового преобразования, которые отличаются друг от друга обработкой неточных преобразований:
Записи вида T(x) или convert(T,x) преобразуют x в значение типа T. Результат зависит от следующих двух случаев:
● Если T – тип с плавающей точкой, то результатом будет ближайшее представимое значение, которое может быть положительной или отрицательной бесконечностью.
● Если T является целочисленным типом, и x не может быть представлен в типе T (наличие значащих цифр после запятой или переполнение типа Т), то возникает ошибка InexactError.
Запись вида x%T преобразует целое число x в значение целочисленного типа T, соответствующее x по модулю 2^n. Здесь n представляет количество битов в T. Другими словами, двоичное представление усекается, чтобы оно соответствовало размеру. Применимо только для целых чисел и целочисленных типов, переполнение типа обрабатывается стандартно.
Функции округления принимают тип T в качестве необязательного аргумента. Например, round(Int,x) – это сокращение для Int(round(x)). Переполнение типа вызывает ошибку.
Пример числовых преобразований, описанных выше:
julia> Int8(100)
100
julia> Int8(100.25)
ERROR: InexactError: Int8(100.25)
julia> Int8(128)
ERROR: InexactError: trunc(Int8, 128)
julia> 100 % Int8
100
julia> 128 % Int8
–128
julia> 129 % Int8
–127
julia> round(Int8, 100.51)
101
julia> round(Int8, 127.51)
ERROR: InexactError: trunc(Int8, 128.0)
В таблице ниже показаны функции округления Julia:
Пример использования функций округления:
julia> round(4.6)