Числа
Стандартные числовые типы
Bool Int8 UInt8 Int16 UInt16 Int32 UInt32 Int64 UInt64 Int128 UInt128 Float16 Float32 Float64 Complex64 Complex128
Форматы данных
-
bin(n[, pad]) -
Преобразовать целое число в двоичную строку, необязательно задавая количество цифр для дополнения.
-
hex(n[, pad]) -
Преобразовать целое число в шестнадцатеричную строку, необязательно задавая количество цифр для дополнения.
-
dec(n[, pad]) -
Преобразовать целое число в десятичную строку, необязательно задавая количество цифр для дополнения.
-
oct(n[, pad]) -
Преобразовать целое число в восьмеричную строку, необязательно задавая количество цифр для дополнения.
-
base(base, n[, pad]) -
Преобразовать целое число в строку в заданной системе счисления, необязательно задавая количество цифр для дополнения.
-
digits([T, ]n[, base][, pad]) -
Возвращает массив с типом элементов
T(по умолчаниюInt) цифр числаnв заданной системе счисления, необязательно дополненный нулями до заданного размера. Более значимые цифры находятся в индексах с более высокими значениями, так чтоn == sum([digits[k]*base^(k-1) for k=1:length(digits)]).
-
digits!(array, n[, base]) -
Заполняет массив цифр числа
nв заданной системе счисления. Более значимые цифры находятся в индексах с более высокими значениями. Если длина массива недостаточна, наименее значимые цифры заполняются до длины массива. Если длина массива избыточна, избыточная часть заполняется нулями.
-
bits(n) -
Строка, представляющая буквальное битовое представление числа.
-
parse(type, str[, base]) -
Разобрать строку как число. Если тип — целочисленный, можно указать систему счисления (по умолчанию 10). Если тип — с плавающей точкой, строка разбирается как десятичное число с плавающей точкой. Если строка не содержит корректного числа, генерируется ошибка.
-
tryparse(type, str[, base]) -
Как
parse, но возвращаетNullableзапрошенного типа. Результат будет равен null, если строка не содержит корректного числа.
-
big(x) -
Преобразовать число в представление с максимальной точностью (обычно
BigIntилиBigFloat). См.BigFloatдля информации о некоторых подводных камнях с числами с плавающей точкой.
-
signed(x) -
Преобразовать число в целое со знаком. Если аргумент без знака, он переинтерпретируется как со знаком без проверки на переполнение.
-
unsigned(x) → Unsigned -
Преобразовать число в целое без знака. Если аргумент со знаком, он переинтерпретируется как без знака без проверки на отрицательные значения.
-
float(x) -
Преобразовать число, массив или строку в тип данных
AbstractFloat. Для числовых данных используется наименьший подходящий типAbstractFloat. Преобразует строки вFloat64.
-
significand(x) -
Извлечь
significand(s)(также известную как мантиссу) в двоичном представлении числа с плавающей точкой или массива. Еслиx— ненулевое конечное число, то результат будет числом того же типа на интервале \([1,2)\). В противном случае возвращаетсяx.julia> significand(15.2)/15.2 0.125 julia> significand(15.2)*8 15.2
-
exponent(x) → Int -
Получить показатель степени нормализованного числа с плавающей точкой.
-
complex(r[, i]) -
Преобразовать вещественные числа или массивы в комплексные.
iпо умолчанию равен нулю.
-
bswap(n) -
Переставить байты целого числа.
-
num2hex(f) -
Получить шестнадцатеричную строку двоичного представления числа с плавающей точкой.
-
hex2num(str) -
Преобразовать шестнадцатеричную строку в число с плавающей точкой, которое она представляет.
-
hex2bytes(s::AbstractString) -
Преобразовать произвольно длинную шестнадцатеричную строку в её двоичное представление. Возвращает
Array{UInt8,1}, т.е. массив байтов.
-
bytes2hex(bin_arr::Array{UInt8, 1}) -
Преобразовать массив байтов в его шестнадцатеричное представление. Все символы в нижнем регистре. Возвращает
String.
Общие числовые функции и константы
-
one(x) -
Получить элемент единицы умножения для типа
x(xтакже может указать сам тип). Для матриц возвращает единичную матрицу соответствующего размера и типа.
-
zero(x) -
Получить элемент единицы сложения для типа
x(xтакже может указать сам тип).
-
pi -
π -
Постоянная пи.
-
im -
Мнимая единица.
-
e -
eu -
Постоянная е.
-
catalan -
Постоянная Каталана.
-
γ -
eulergamma -
Постоянная Эйлера.
-
φ -
golden -
Золотое сечение.
-
Inf -
Положительная бесконечность типа
Float64.
-
Inf32 -
Положительная бесконечность типа
Float32.
-
Inf16 -
Положительная бесконечность типа
Float16.
-
NaN -
Значение не-число (NaN) типа
Float64.
-
NaN32 -
Значение не-число (NaN) типа
Float32.
-
NaN16 -
Значение не-число (NaN) типа
Float16.
-
issubnormal(f) → Bool -
Проверить, является ли число с плавающей точкой субнормальным.
-
isfinite(f) → Bool -
Проверить, является ли число конечным.
-
isinf(f) → Bool -
Проверить, является ли число бесконечным.
-
isnan(f) → Bool -
Проверить, является ли число с плавающей точкой не числом (NaN).
-
nextfloat(x::AbstractFloat) -
Возвращает наименьшее число с плавающей точкой
yтого же типа, что иx, такое, чтоx < y. Если такого числаyне существует (например, еслиxравноInfилиNaN), то возвращаетx.
-
prevfloat(x::AbstractFloat) -
Возвращает наибольшее число с плавающей точкой
yтого же типа, что иx, такое, чтоy < x. Если такого числаyне существует (например, еслиxравно-InfилиNaN), то возвращаетx.
-
nextfloat(x::AbstractFloat, n::Integer) -
Результат
nитеративных примененийnextfloatкxеслиn >= 0, или-nпримененийprevfloatеслиn < 0.
-
isinteger(x) → Bool -
Проверить, является ли
xили все его элементы численно равными целому числу.
-
isreal(x) → Bool -
Проверить, является ли
xили все его элементы численно равными вещественному числу.
-
isimag(z) → Bool -
Проверить, является ли
zчисто мнимым, т.е. имеет действительную часть равную 0.
-
Float32(x[, mode::RoundingMode]) -
Создать Float32 из
x. Еслиxне точно представимо, тоmodeопределяет, какxокругляется.julia> Float32(1/3, RoundDown) 0.3333333f0 julia> Float32(1/3, RoundUp) 0.33333334f0
См.
RoundingModeдля доступных режимов округления.
-
Float64(x[, mode::RoundingMode]) -
Создать Float64 из
x. Еслиxне точно представимо, тоmodeопределяет, какxокругляется.julia> Float64(pi, RoundDown) 3.141592653589793 julia> Float64(pi, RoundUp) 3.1415926535897936
См.
RoundingModeдля доступных режимов округления.
-
BigInt(x) -
Создать целое число произвольной точности.
xможет бытьInt(или чем-либо, что можно преобразовать вInt). Для этого типа определены обычные математические операторы, а результаты повышаются доBigInt.Экземпляры могут быть созданы из строк с помощью
parse()или с использованием строковой литералыbig.
-
BigFloat(x) -
Создать число с плавающей запятой произвольной точности.
xможет бытьInteger,Float64илиBigInt. Для этого типа определены обычные математические операторы, а результаты повышаются доBigFloat.Обратите внимание, что поскольку десятичные литералы преобразуются в числа с плавающей запятой при разборе,
BigFloat(2.1)может не дать ожидаемого результата. Вместо этого вы можете предпочесть инициализацию констант из строк с помощьюparse()или с использованием строковой литералыbig.julia> BigFloat(2.1) 2.100000000000000088817841970012523233890533447265625000000000000000000000000000 julia> big"2.1" 2.099999999999999999999999999999999999999999999999999999999999999999999999999986
-
rounding(T) -
Получить текущий режим округления чисел с плавающей запятой для типа
T, контролирующий округление основных арифметических функций (+(),-(),*(),/()иsqrt()) и преобразование типов.См.
RoundingModeдля доступных режимов.
-
setrounding(T, mode) -
Установить режим округления для типа чисел с плавающей запятой
T, контролирующий округление основных арифметических функций (+(),-(),*(),/()иsqrt()) и преобразование типов. Другие числовые функции могут давать неверные или недопустимые значения при использовании режимов округления, отличных от значения по умолчаниюRoundNearest.Обратите внимание, что это может повлиять и на другие типы, например, изменение режима округления
Float64изменит режим округленияFloat32. См.RoundingModeдля доступных режимов.Предупреждение
Эта функция всё ещё находится в стадии разработки и может давать неожиданные или неверные значения.
-
setrounding(f::Function, T, mode) -
Изменить режим округления типа чисел с плавающей запятой
Tна времяf. Логически эквивалентно:old = rounding(T) setrounding(T, mode) f() setrounding(T, old)
См.
RoundingModeдля доступных режимов округления.Предупреждение
Эта функция всё ещё находится в стадии разработки и может давать неожиданные или неверные значения. Известная проблема связана с взаимодействием с оптимизациями компилятора, например:
julia> setrounding(Float64,RoundDown) do 1.1 + 0.1 end 1.2000000000000002Здесь компилятор выполняет постоянное свёртку, то есть вычисляет известное константное выражение во время компиляции, однако режим округления изменяется только во время выполнения, поэтому это не отражается в результате работы функции. Этого можно избежать, вынеся константы за пределы выражения, например:
julia> x = 1.1; y = 0.1; julia> setrounding(Float64,RoundDown) do x + y end 1.2
-
get_zero_subnormals() → Bool -
Возвращает
falseесли операции над значениями с плавающей запятой с малой значимостью («денормализованными») подчиняются правилам IEEE арифметики, иtrueесли они могут быть преобразованы в нули.
-
set_zero_subnormals(yes::Bool) → Bool -
Если
yesравноfalse, последующие операции с плавающей запятой следуют правилам IEEE арифметики для значений с малой значимостью («денормализованных»). В противном случае операции с плавающей запятой могут (но не обязаны) преобразовывать малые значения ввода или вывода в ноль. Возвращаетtrueза исключением случаевyes==true, но аппаратное обеспечение не поддерживает нулевое значение поднормализованных чисел.set_zero_subnormals(true)может ускорить некоторые вычисления на некоторых аппаратных платформах. Однако, это может нарушить тождества, такие как(x-y==0) == (x==y).
Целые числа
-
count_ones(x::Integer) → Integer -
Количество единиц в двоичном представлении
x.julia> count_ones(7) 3
-
count_zeros(x::Integer) → Integer -
Количество нулей в двоичном представлении
x.julia> count_zeros(Int32(2 ^ 16 - 1)) 16
-
leading_zeros(x::Integer) → Integer -
Количество нулей, предшествующих двоичному представлению
x.julia> leading_zeros(Int32(1)) 31
-
leading_ones(x::Integer) → Integer -
Количество единиц, предшествующих двоичному представлению
x.julia> leading_ones(UInt32(2 ^ 32 - 2)) 31
-
trailing_zeros(x::Integer) → Integer -
Количество нулей, следующих за двоичным представлением
x.julia> trailing_zeros(2) 1
-
trailing_ones(x::Integer) → Integer -
Количество единиц, следующих за двоичным представлением
x.julia> trailing_ones(3) 2
-
isodd(x::Integer) → Bool -
Возвращает
true, еслиxнечётно (то есть не делится на 2), иfalseв противном случае.julia> isodd(9) true julia> isodd(10) false
-
iseven(x::Integer) → Bool -
Возвращает
true, еслиxчётно (то есть делится на 2), иfalseв противном случае.julia> iseven(9) false julia> iseven(10) true
BigFloats
Тип BigFloat реализует арифметику с плавающей запятой произвольной точности с использованием библиотеки GNU MPFR.
-
precision(num::AbstractFloat) -
Получить точность числа с плавающей запятой, определяемую эффективным числом битов в мантиссе.
-
precision(BigFloat) -
Получить точность (в битах), используемую в настоящее время для арифметики
BigFloat.
-
setprecision([T=BigFloat, ]precision::Int) -
Установить точность (в битах), которая будет использоваться для арифметики
T.
-
setprecision(f::Function, [T=BigFloat, ]precision::Integer) -
Изменить точность арифметики
T(в битах) на времяf. Логически эквивалентно:old = precision(BigFloat) setprecision(BigFloat, precision) f() setprecision(BigFloat, old)
Часто используется как
setprecision(T, precision) do ... end
Случайные числа
Генерация случайных чисел в Julia использует библиотеку Mersenne Twister через объекты MersenneTwister. Julia имеет глобальный генератор случайных чисел, который используется по умолчанию. Другие типы генераторов случайных чисел могут быть подключены путём наследования типа AbstractRNG; они затем могут использоваться для получения нескольких потоков случайных чисел. Помимо MersenneTwister, Julia также предоставляет тип генератора случайных чисел RandomDevice, который является оболочкой над предоставленной ОС энтропией.
Большинство функций, связанных с генерацией случайных чисел, принимают необязательный генератор AbstractRNG в качестве первого аргумента, rng , который по умолчанию равен глобальному, если не указан. Кроме того, некоторые из них необязательно принимают спецификации размерности dims... (которые могут быть заданы как кортеж) для генерации массивов случайных значений.
Генератор MersenneTwister или RandomDevice может генерировать случайные числа следующих типов: Float16, Float32, Float64, Bool, Int8, UInt8, Int16, UInt16, Int32, UInt32, Int64, UInt64, Int128, UInt128, BigInt (или комплексные числа этих типов). Случайные числа с плавающей запятой генерируются равномерно в \([0, 1)\). Поскольку BigInt представляет неограниченные целые числа, интервал должен быть указан (например, rand(big(1:6))).
-
srand([rng][, seed]) -
Перезапустить генератор случайных чисел. Если указан
seed, генератор случайных чисел будет выдавать воспроизводимую последовательность чисел, в противном случае Julia получит энтропию из системы. ДляMersenneTwister,seedможет быть целым неотрицательным числом, вектором целых чисел или именем файла, в этом случае seed считывается из файла.RandomDeviceне поддерживает инициализацию.
-
MersenneTwister([seed]) -
Создать объект генератора случайных чисел
MersenneTwister. Разные объекты генераторов случайных чисел могут иметь свои собственные семена, что может быть полезно для генерации различных потоков случайных чисел.
-
RandomDevice() -
Создать объект генератора случайных чисел
RandomDevice. Два таких объекта всегда будут генерировать разные потоки случайных чисел.
-
rand([rng][, S][, dims...]) -
Выберите случайный элемент или массив случайных элементов из набора значений, указанных в
S;Sможет быть- индексируемой коллекцией (например,
1:nили['x','y','z']), или - типом: набор значений для выбора затем эквивалентен
typemin(S):typemax(S)для целых чисел (это не относится кBigInt), и к \([0, 1)\) для чисел с плавающей точкой;
Sпо умолчаниюFloat64. - индексируемой коллекцией (например,
-
rand!([rng, ]A[, coll]) -
Заполните массив
Aслучайными значениями. Если указана индексируемая коллекцияcoll, значения выбираются случайным образом изcoll. Это эквивалентноcopy!(A, rand(rng, coll, size(A)))илиcopy!(A, rand(rng, eltype(A), size(A))), но без выделения нового массива.
-
bitrand([rng][, dims...]) -
Генерирует
BitArrayслучайных логических значений.
-
randn([rng][, T=Float64][, dims...]) -
Генерирует случайное число, распределённое по нормальному закону, типа
Tсо средним значением 0 и стандартным отклонением 1. Также можно сгенерировать массив таких случайных чисел. МодульBaseв настоящее время предоставляет реализацию для типовFloat16,Float32, иFloat64(по умолчанию).
-
randn!([rng, ]A::AbstractArray) → A -
Заполните массив
Aслучайными числами, распределёнными по нормальному закону (среднее 0, стандартное отклонение 1). Также обратитесь к функцииrand.
-
randexp([rng][, T=Float64][, dims...]) -
Генерирует случайное число типа
Tв соответствии с экспоненциальным распределением со масштабом 1. Также можно сгенерировать массив таких случайных чисел. МодульBaseв настоящее время предоставляет реализацию для типовFloat16,Float32, иFloat64(по умолчанию).
-
randexp!([rng, ]A::AbstractArray) → A -
Заполните массив
Aслучайными числами, следующими экспоненциальному распределению (с масштабом 1).
-
randjump(r::MersenneTwister, jumps[, jumppoly]) → Vector{MersenneTwister} -
Создает массив размером
jumpsинициализированных объектовMersenneTwisterRNG, где первый объект RNG, заданный в качестве параметра, и последующие объекты RNG в массиве инициализируются таким образом, что состояние объекта RNG в массиве будет сдвинуто вперёд (без генерации чисел) от предыдущего элемента массива RNG на определённое количество шагов, закодированных в полиноме переходаjumppoly.Полином перехода по умолчанию сдвигает состояние RNG на 10^20 шагов вперёд.
© 2009–2016 Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors
Licensed under the MIT License.
https://docs.julialang.org/en/release-0.5/stdlib/numbers/