Numbers
Standard Numeric Types
Дерево типов для всех подтипов Number в Base показано ниже. Абстрактные типы отмечены, остальные - конкретные типы.
Number (Abstract Type)
├─ Complex
└─ Real (Abstract Type)
├─ AbstractFloat (Abstract Type)
│ ├─ Float16
│ ├─ Float32
│ ├─ Float64
│ └─ BigFloat
├─ Integer (Abstract Type)
│ ├─ Bool
│ ├─ Signed (Abstract Type)
│ │ ├─ Int8
│ │ ├─ Int16
│ │ ├─ Int32
│ │ ├─ Int64
│ │ ├─ Int128
│ │ └─ BigInt
│ └─ Unsigned (Abstract Type)
│ ├─ UInt8
│ ├─ UInt16
│ ├─ UInt32
│ ├─ UInt64
│ └─ UInt128
├─ Rational
└─ AbstractIrrational (Abstract Type)
└─ IrrationalAbstract number types
Core.Number — TypeЧислоАбстрактный суперкласс для всех типов чисел.
Core.Real — TypeReal <: NumberАбстрактный суперкласс для всех действительных чисел.
Core.AbstractFloat — TypeAbstractFloat <: RealАбстрактный суперкласс для всех чисел с плавающей запятой.
Core.Integer — TypeЦелое <: РеальноеАбстрактный суперкласс для всех целых чисел (например, Signed, Unsigned и Bool).
См. также isinteger, trunc, div.
Примеры
julia> 42 isa Integer
true
julia> 1.0 isa Integer
false
julia> isinteger(1.0)
trueCore.Signed — TypeSigned <: IntegerАбстрактный суперкласс для всех знаковых целых чисел.
Core.Unsigned — TypeБеззнаковый <: ЦелоеАбстрактный суперкласс для всех беззнаковых целых чисел.
Встроенные беззнаковые целые числа выводятся в шестнадцатеричном формате с префиксом 0x и могут быть введены тем же образом.
Примеры
julia> typemax(UInt8)
0xff
julia> Int(0x00d)
13
julia> unsigned(true)
0x0000000000000001Base.AbstractIrrational — TypeAbstractIrrational <: RealТип числа, представляющий точное иррациональное значение, которое автоматически округляется до правильной точности в арифметических операциях с другими числовыми величинами.
Подтипы MyIrrational <: AbstractIrrational должны реализовывать как минимум ==(::MyIrrational, ::MyIrrational), hash(x::MyIrrational, h::UInt) и convert(::Type{F}, x::MyIrrational) where {F <: Union{BigFloat,Float32,Float64}}.
Если подтип используется для представления значений, которые могут иногда быть рациональными (например, тип квадратного корня, который представляет √n для целых n, даст рациональный результат, когда n является совершенным квадратом), то он также должен реализовывать isinteger, iszero, isone и == с значениями Real (поскольку все эти функции по умолчанию возвращают false для типов AbstractIrrational), а также определять hash, чтобы он равнялся соответствующему Rational.
Concrete number types
Core.Float16 — TypeFloat16 <: AbstractFloat <: Real16-битный тип числа с плавающей запятой (стандарт IEEE 754). Двоичный формат состоит из 1 знака, 5 экспонент и 10 бит дробной части.
Core.Float32 — TypeFloat32 <: AbstractFloat <: Real32-битный тип числа с плавающей запятой (стандарт IEEE 754). Двоичный формат состоит из 1 знака, 8 экспоненты и 23 битов дробной части.
Экспоненту для научной нотации следует вводить в нижнем регистре f, таким образом 2f3 === 2.0f0 * 10^3 === Float32(2_000). Для литералов массивов и генераторов можно указать тип элемента перед квадратными скобками: Float32[1,4,9] == Float32[i^2 for i in 1:3].
Core.Float64 — TypeFloat64 <: AbstractFloat <: RealТип числа с плавающей запятой с двойной точностью (стандарт IEEE 754). Двоичный формат состоит из 1 знака, 11 экспоненты и 52 битов дробной части. См. bitstring, signbit, exponent, frexp и significand для доступа к различным битам.
Это значение по умолчанию для литералов с плавающей запятой, 1.0 isa Float64, и для многих операций, таких как 1/2, 2pi, log(2), range(0,90,length=4). В отличие от целых чисел, это значение по умолчанию не изменяется с Sys.WORD_SIZE.
Экспоненту для научной нотации можно вводить как e, так и E, таким образом 2e3 === 2.0E3 === 2.0 * 10^3. Это предпочтительнее, чем 10^n, потому что целые числа могут переполняться, таким образом 2.0 * 10^19 < 0, но 2e19 > 0.
Base.MPFR.BigFloat — TypeBigFloat <: AbstractFloatТип числа с плавающей запятой произвольной точности.
Core.Bool — TypeBool <: IntegerБулевый тип, содержащий значения true и false.
Bool — это вид числа: false численно равно 0, а true численно равно 1. Более того, false действует как мультипликативный "сильный ноль" против NaN и Inf:
julia> [true, false] == [1, 0]
true
julia> 42.0 + true
43.0
julia> 0 .* (NaN, Inf, -Inf)
(NaN, NaN, NaN)
julia> false .* (NaN, Inf, -Inf)
(0.0, 0.0, -0.0)Ветвления через if и другие условные операторы принимают только Bool. В Julia нет "истинных" значений.
Сравнения обычно возвращают Bool, а широкие сравнения могут возвращать BitArray вместо Array{Bool}.
julia> [1 2 3 4 5] .< pi
1×5 BitMatrix:
1 1 1 0 0
julia> map(>(pi), [1 2 3 4 5])
1×5 Matrix{Bool}:
0 0 0 1 1Core.Int8 — TypeInt8 <: Signed <: Integer8-битный знаковый тип целого числа.
Представляет числа n ∈ -128:127. Обратите внимание, что такие целые числа переполняются без предупреждения, поэтому typemax(Int8) + Int8(1) < 0.
Core.UInt8 — TypeUInt8 <: Unsigned <: Integer8-битный беззнаковый целочисленный тип.
Выводится в шестнадцатеричном формате, таким образом 0x07 == 7.
Core.Int16 — TypeInt16 <: Signed <: Integer16-битный знаковый тип целого числа.
Представляет числа n ∈ -32768:32767. Обратите внимание, что такие целые числа переполняются без предупреждения, поэтому typemax(Int16) + Int16(1) < 0.
Core.UInt16 — TypeUInt16 <: Unsigned <: Integer16-битный беззнаковый целочисленный тип.
Выводится в шестнадцатеричном формате, таким образом 0x000f == 15.
Core.Int32 — TypeInt32 <: Signed <: Integer32-битный знаковый целочисленный тип.
Обратите внимание, что такие целые числа переполняются без предупреждения, поэтому typemax(Int32) + Int32(1) < 0.
Core.UInt32 — TypeUInt32 <: Unsigned <: Integer32-битный беззнаковый целочисленный тип.
Выводится в шестнадцатеричном формате, таким образом 0x0000001f == 31.
Core.Int64 — TypeInt64 <: Signed <: Integer64-битный знаковый тип целого числа.
Обратите внимание, что такие целые числа переполняются без предупреждения, поэтому typemax(Int64) + Int64(1) < 0.
Core.UInt64 — TypeUInt64 <: Unsigned <: IntegerТип беззнакового целого числа на 64 бита.
Напечатано в шестнадцатеричном формате, таким образом 0x000000000000003f == 63.
Core.Int128 — TypeInt128 <: Signed <: Integer128-битный знаковый целочисленный тип.
Обратите внимание, что такие целые числа переполняются без предупреждения, поэтому typemax(Int128) + Int128(1) < 0.
Core.UInt128 — TypeUInt128 <: Unsigned <: Integer128-битный беззнаковый целочисленный тип.
Напечатано в шестнадцатеричном формате, таким образом 0x0000000000000000000000000000007f == 127.
Core.Int — TypeIntТип знакового целого числа размером Sys.WORD_SIZE бит, Int <: Signed <: Integer <: Real.
Это тип по умолчанию для большинства литералов целых чисел и является псевдонимом для Int32 или Int64, в зависимости от Sys.WORD_SIZE. Это тип, возвращаемый такими функциями, как length, и стандартный тип для индексирования массивов.
Обратите внимание, что целые числа переполняются без предупреждения, таким образом typemax(Int) + 1 < 0 и 10^19 < 0. Переполнение можно избежать, используя BigInt. Очень большие литералы целых чисел будут использовать более широкий тип, например 10_000_000_000_000_000_000 isa Int128.
Целочисленное деление — это div, псевдоним ÷, в то время как /, действующий на целых числах, возвращает Float64.
Core.UInt — TypeUIntТип беззнакового целого числа размером Sys.WORD_SIZE бит, UInt <: Unsigned <: Integer.
Как и Int, псевдоним UInt может указывать либо на UInt32, либо на UInt64, в зависимости от значения Sys.WORD_SIZE на данном компьютере.
Выводится и разбирается в шестнадцатеричном формате: UInt(15) === 0x000000000000000f.
Base.GMP.BigInt — TypeBigInt <: SignedТип целого числа произвольной точности.
Base.Complex — TypeComplex{T<:Real} <: NumberКомплексный числовой тип с действительной и мнимой частью типа T.
ComplexF16, ComplexF32 и ComplexF64 являются псевдонимами для Complex{Float16}, Complex{Float32} и Complex{Float64} соответственно.
Base.Rational — TypeRational{T<:Integer} <: RealТип рационального числа, с числителем и знаменателем типа T. Рациональные числа проверяются на переполнение.
Base.Irrational — TypeIrrational{sym} <: AbstractIrrationalТип числа, представляющий точное иррациональное значение, обозначаемое символом sym, таким как π, ℯ и γ.
См. также AbstractIrrational.
Data Formats
Base.digits — Functiondigits([T<:Integer], n::Integer; base::T = 10, pad::Integer = 1)Возвращает массив с типом элемента T (по умолчанию Int) цифр числа n в заданной системе счисления, при необходимости дополненный нулями до указанного размера. Более значимые цифры находятся на более высоких индексах, так что n == sum(digits[k]*base^(k-1) for k in eachindex(digits)).
Смотрите также ndigits, digits!, а для базы 2 также bitstring, count_ones.
Примеры
julia> digits(10)
2-element Vector{Int64}:
0
1
julia> digits(10, base = 2)
4-element Vector{Int64}:
0
1
0
1
julia> digits(-256, base = 10, pad = 5)
5-element Vector{Int64}:
-6
-5
-2
0
0
julia> n = rand(-999:999);
julia> n == evalpoly(13, digits(n, base = 13))
trueBase.digits! — Functiondigits!(array, n::Integer; base::Integer = 10)Заполняет массив цифрами числа n в заданной системе счисления. Более значимые цифры находятся на более высоких индексах. Если длины массива недостаточно, наименее значимые цифры заполняются до длины массива. Если длина массива избыточна, избыточная часть заполняется нулями.
Примеры
julia> digits!([2, 2, 2, 2], 10, base = 2)
4-element Vector{Int64}:
0
1
0
1
julia> digits!([2, 2, 2, 2, 2, 2], 10, base = 2)
6-element Vector{Int64}:
0
1
0
1
0
0Base.bitstring — Functionbitstring(n)Строка, представляющая собой буквальное битовое представление примитивного типа.
См. также count_ones, count_zeros, digits.
Примеры
julia> bitstring(Int32(4))
"00000000000000000000000000000100"
julia> bitstring(2.2)
"0100000000000001100110011001100110011001100110011001100110011010"Base.parse — Functionparse(::Type{SimpleColor}, rgb::String)Аналог функции tryparse(SimpleColor, rgb::String) (см. там), которая вызывает ошибку вместо возврата nothing.
parse(::Type{Platform}, triplet::AbstractString)Парсит строковый платформенный тройник обратно в объект Platform.
parse(type, str; base)Парсит строку как число. Для типов Integer можно указать основание (по умолчанию 10). Для типов с плавающей запятой строка парсится как десятичное число с плавающей запятой. Типы Complex парсятся из десятичных строк формата "R±Iim" как Complex(R,I) запрашиваемого типа; вместо "im" также можно использовать "i" или "j", а "R" или "Iim" также разрешены. Если строка не содержит допустимого числа, возникает ошибка.
parse(Bool, str) требует как минимум Julia 1.1.
Примеры
julia> parse(Int, "1234")
1234
julia> parse(Int, "1234", base = 5)
194
julia> parse(Int, "afc", base = 16)
2812
julia> parse(Float64, "1.2e-3")
0.0012
julia> parse(Complex{Float64}, "3.2e-1 + 4.5im")
0.32 + 4.5imBase.tryparse — Functiontryparse(::Type{SimpleColor}, rgb::String)Попытка разобрать rgb как SimpleColor. Если rgb начинается с # и имеет длину 7, он преобразуется в RGBTuple-поддерживаемый SimpleColor. Если rgb начинается с a-z, rgb интерпретируется как имя цвета и преобразуется в Symbol-поддерживаемый SimpleColor.
В противном случае возвращается nothing.
Примеры
julia> tryparse(SimpleColor, "blue")
SimpleColor(blue)
julia> tryparse(SimpleColor, "#9558b2")
SimpleColor(#9558b2)
julia> tryparse(SimpleColor, "#nocolor")tryparse(type, str; base)Как и parse, но возвращает либо значение запрашиваемого типа, либо nothing, если строка не содержит допустимого числа.
Base.big — Functionbig(x)Преобразует число в представление с максимальной точностью (обычно BigInt или BigFloat). См. BigFloat для получения информации о некоторых подводных камнях с числами с плавающей запятой.
Base.signed — Functionsigned(T::Integer)Преобразует целочисленный тип битов в знаковый тип того же размера.
Примеры
julia> signed(UInt16)
Int16
julia> signed(UInt64)
Int64signed(x)Преобразует число в знаковое целое. Если аргумент без знака, он интерпретируется как знаковый без проверки на переполнение.
Base.unsigned — Functionunsigned(T::Integer)Преобразует целочисленный тип битов в беззнаковый тип того же размера.
Примеры
julia> unsigned(Int16)
UInt16
julia> unsigned(UInt64)
UInt64Base.float — Methodfloat(x)Преобразует число или массив в тип данных с плавающей запятой.
Смотрите также: complex, oftype, convert.
Примеры
julia> float(1:1000)
1.0:1.0:1000.0
julia> float(typemax(Int32))
2.147483647e9Base.Math.significand — Functionsignificand(x)Извлекает мантиссу (также известную как значащая часть) числа с плавающей запятой. Если x является ненулевым конечным числом, то результат будет числом того же типа и знака, что и x, и абсолютное значение которого находится в интервале $[1,2)$. В противном случае возвращается x.
Смотрите также frexp, exponent.
Примеры
julia> significand(15.2)
1.9
julia> significand(-15.2)
-1.9
julia> significand(-15.2) * 2^3
-15.2
julia> significand(-Inf), significand(Inf), significand(NaN)
(-Inf, Inf, NaN)Base.Math.exponent — Functionexponent(x::Real) -> IntВозвращает наибольшее целое число y, такое что 2^y ≤ abs(x).
Вызывает DomainError, когда x равен нулю, бесконечности или NaN. Для любого другого ненормализованного числа с плавающей запятой x это соответствует битам экспоненты x.
См. также signbit, significand, frexp, issubnormal, log2, ldexp.
Примеры
julia> exponent(8)
3
julia> exponent(6.5)
2
julia> exponent(-1//4)
-2
julia> exponent(3.142e-4)
-12
julia> exponent(floatmin(Float32)), exponent(nextfloat(0.0f0))
(-126, -149)
julia> exponent(0.0)
ERROR: DomainError with 0.0:
Cannot be ±0.0.
[...]Base.complex — Methodcomplex(r, [i])Преобразует действительные числа или массивы в комплексные. i по умолчанию равен нулю.
Примеры
julia> complex(7)
7 + 0im
julia> complex([1, 2, 3])
3-element Vector{Complex{Int64}}:
1 + 0im
2 + 0im
3 + 0imBase.bswap — Functionbswap(n)Обратит порядок байтов n.
(См. также ntoh и hton для преобразования между текущим нативным порядком байтов и порядком big-endian.)
Примеры
julia> a = bswap(0x10203040)
0x40302010
julia> bswap(a)
0x10203040
julia> string(1, base = 2)
"1"
julia> string(bswap(1), base = 2)
"100000000000000000000000000000000000000000000000000000000"Base.hex2bytes — Functionhex2bytes(itr)Данная функция принимает итерируемый объект itr, содержащий ASCII-коды для последовательности шестнадцатеричных цифр, и возвращает Vector{UInt8} байтов, соответствующих двоичному представлению: каждая последующая пара шестнадцатеричных цифр в itr дает значение одного байта в возвращаемом векторе.
Длина itr должна быть четной, а возвращаемый массив имеет половину длины itr. См. также hex2bytes! для версии с изменением на месте и bytes2hex для обратного преобразования.
Вызов hex2bytes с итераторами, производящими значения UInt8, требует Julia 1.7 или более поздней версии. В более ранних версиях вы можете collect итератор перед вызовом hex2bytes.
Примеры
julia> s = string(12345, base = 16)
"3039"
julia> hex2bytes(s)
2-element Vector{UInt8}:
0x30
0x39
julia> a = b"01abEF"
6-element Base.CodeUnits{UInt8, String}:
0x30
0x31
0x61
0x62
0x45
0x46
julia> hex2bytes(a)
3-element Vector{UInt8}:
0x01
0xab
0xefBase.hex2bytes! — Functionhex2bytes!(dest::AbstractVector{UInt8}, itr)Преобразует итерируемый itr байтов, представляющих шестнадцатеричную строку, в его двоичное представление, аналогично hex2bytes, за исключением того, что вывод записывается на месте в dest. Длина dest должна быть вдвое меньше длины itr.
Вызов hex2bytes! с итераторами, производящими UInt8, требует версии 1.7. В более ранних версиях вы можете собрать итерируемый объект перед вызовом.
Base.bytes2hex — Functionbytes2hex(itr) -> String
bytes2hex(io::IO, itr)Преобразует итератор itr байтов в его шестнадцатеричное строковое представление, возвращая String через bytes2hex(itr) или записывая строку в поток io через bytes2hex(io, itr). Шестнадцатеричные символы все в нижнем регистре.
Вызов bytes2hex с произвольными итераторами, производящими значения UInt8, требует Julia 1.7 или более поздней версии. В более ранних версиях вы можете collect итератор перед вызовом bytes2hex.
Примеры
julia> a = string(12345, base = 16)
"3039"
julia> b = hex2bytes(a)
2-element Vector{UInt8}:
0x30
0x39
julia> bytes2hex(b)
"3039"General Number Functions and Constants
Base.one — Functionone(x)
one(T::type)Возвращает мультипликативную единицу для x: значение, такое что one(x)*x == x*one(x) == x. В качестве альтернативы one(T) может принимать тип T, в этом случае one возвращает мультипликативную единицу для любого x типа T.
Если возможно, one(x) возвращает значение того же типа, что и x, а one(T) возвращает значение типа T. Однако это может не сработать для типов, представляющих величины с размерностью (например, время в днях), поскольку мультипликативная единица должна быть безразмерной. В этом случае one(x) должен возвращать единичное значение той же точности (и формы, для матриц), что и x.
Если вам нужно количество, которое имеет тот же тип, что и x, или тип T, даже если x имеет размерность, используйте oneunit вместо.
Смотрите также функцию identity и I в LinearAlgebra для единичной матрицы.
Примеры
julia> one(3.7)
1.0
julia> one(Int)
1
julia> import Dates; one(Dates.Day(1))
1Base.oneunit — Functiononeunit(x::T)
oneunit(T::Type)Возвращает T(one(x)), где T — это либо тип аргумента, либо (если передан тип) аргумент. Это отличается от one для количеств с размерностью: one безразмерен (мультипликативная единица), в то время как oneunit имеет размерность (такого же типа, как x, или типа T).
Примеры
julia> oneunit(3.7)
1.0
julia> import Dates; oneunit(Dates.Day)
1 деньBase.zero — Functionzero(x)
zero(::Type)Получите аддитивный единичный элемент для типа x (x также может указывать на сам тип).
Смотрите также iszero, one, oneunit, oftype.
Примеры
julia> zero(1)
0
julia> zero(big"2.0")
0.0
julia> zero(rand(2,2))
2×2 Matrix{Float64}:
0.0 0.0
0.0 0.0Base.im — ConstantimМнимая единица.
См. также: imag, angle, complex.
Примеры
julia> im * im
-1 + 0im
julia> (2.0 + 3im)^2
-5.0 + 12.0imBase.MathConstants.pi — Constantπ
piКонстанта пи.
Юникод π можно ввести, написав \pi, а затем нажав tab в Julia REPL и во многих редакторах.
Смотрите также: sinpi, sincospi, deg2rad.
Примеры
julia> pi
π = 3.1415926535897...
julia> 1/2pi
0.15915494309189535Base.MathConstants.ℯ — Constantℯ
eКонстанта ℯ.
Юникод ℯ можно ввести, написав \euler и нажав таб в Julia REPL, а также во многих редакторах.
Примеры
julia> ℯ
ℯ = 2.7182818284590...
julia> log(ℯ)
1
julia> ℯ^(im)π ≈ -1
trueBase.MathConstants.catalan — Constantконстанта Каталана
# Примеры
jldoctest julia> Base.MathConstants.catalan catalan = 0.9159655941772...
julia> sum(log(x)/(1+x^2) for x in 1:0.01:10^6) * 0.01 0.9159466120554123 ```
Base.MathConstants.eulergamma — Constantγ
eulergammaКонстанта Эйлера.
Примеры
julia> Base.MathConstants.eulergamma
γ = 0.5772156649015...
julia> dx = 10^-6;
julia> sum(-exp(-x) * log(x) for x in dx:dx:100) * dx
0.5772078382499133Base.MathConstants.golden — Constantφ
золотое
Золотое сечение.
# Примеры
jldoctest julia> Base.MathConstants.golden φ = 1.6180339887498...
julia> (2ans - 1)^2 ≈ 5 true ```
Base.Inf — ConstantInf, Inf64Положительная бесконечность типа Float64.
См. также: isfinite, typemax, NaN, Inf32.
Примеры
julia> π/0
Inf
julia> +1.0 / -0.0
-Inf
julia> ℯ^-Inf
0.0Base.Inf64 — ConstantInf, Inf64Положительная бесконечность типа Float64.
См. также: isfinite, typemax, NaN, Inf32.
Примеры
julia> π/0
Inf
julia> +1.0 / -0.0
-Inf
julia> ℯ^-Inf
0.0Base.Inf32 — ConstantInf32Положительная бесконечность типа Float32.
Base.Inf16 — ConstantInf16Положительная бесконечность типа Float16.
Base.NaN — ConstantNaN, NaN64Значение "не число" типа Float64.
См. также: isnan, missing, NaN32, Inf.
Примеры
julia> 0/0
NaN
julia> Inf - Inf
NaN
julia> NaN == NaN, isequal(NaN, NaN), isnan(NaN)
(false, true, true)!!! примечание Всегда используйте isnan или isequal для проверки на NaN. Использование x === NaN может дать неожиданные результаты:
```julia-repl
julia> reinterpret(UInt32, NaN32)
0x7fc00000
julia> NaN32p1 = reinterpret(Float32, 0x7fc00001)
NaN32
julia> NaN32p1 === NaN32, isequal(NaN32p1, NaN32), isnan(NaN32p1)
(false, true, true)
```Base.NaN64 — ConstantNaN, NaN64Значение "не число" типа Float64.
См. также: isnan, missing, NaN32, Inf.
Примеры
julia> 0/0
NaN
julia> Inf - Inf
NaN
julia> NaN == NaN, isequal(NaN, NaN), isnan(NaN)
(false, true, true)!!! примечание Всегда используйте isnan или isequal для проверки на NaN. Использование x === NaN может дать неожиданные результаты:
```julia-repl
julia> reinterpret(UInt32, NaN32)
0x7fc00000
julia> NaN32p1 = reinterpret(Float32, 0x7fc00001)
NaN32
julia> NaN32p1 === NaN32, isequal(NaN32p1, NaN32), isnan(NaN32p1)
(false, true, true)
```Base.NaN32 — ConstantBase.NaN16 — ConstantBase.issubnormal — Functionissubnormal(f) -> BoolПроверьте, является ли число с плавающей запятой поднормальным.
Число с плавающей запятой IEEE является поднормальным, когда его биты экспоненты равны нулю, а его мантисса не равна нулю.
Примеры
julia> floatmin(Float32)
1.1754944f-38
julia> issubnormal(1.0f-37)
false
julia> issubnormal(1.0f-38)
trueBase.isfinite — Functionisfinite(f) -> BoolПроверьте, является ли число конечным.
Примеры
julia> isfinite(5)
true
julia> isfinite(NaN32)
falseBase.isinf — Functionisinf(f) -> BoolПроверьте, является ли число бесконечным.
Base.isnan — Functionisnan(f) -> BoolПроверьте, является ли числовое значение NaN, неопределенным значением, которое не является ни бесконечностью, ни конечным числом ("не число").
Base.iszero — Functioniszero(x)Возвращает true, если x == zero(x); если x является массивом, это проверяет, являются ли все элементы x нулями.
См. также: isone, isinteger, isfinite, isnan.
Примеры
julia> iszero(0.0)
true
julia> iszero([1, 9, 0])
false
julia> iszero([false, 0, 0])
trueBase.isone — Functionisone(x)Возвращает true, если x == one(x); если x является массивом, это проверяет, является ли x единичной матрицей.
Примеры
julia> isone(1.0)
true
julia> isone([1 0; 0 2])
false
julia> isone([1 0; 0 true])
trueBase.nextfloat — Functionnextfloat(x::AbstractFloat, n::Integer)Результат n итеративных применений nextfloat к x, если n >= 0, или -n применений prevfloat, если n < 0.
nextfloat(x::AbstractFloat)Возвращает наименьшее число с плавающей запятой y того же типа, что и x, такое что x < y. Если такого y не существует (например, если x равно Inf или NaN), то возвращает x.
Смотрите также: prevfloat, eps, issubnormal.
Base.prevfloat — Functionprevfloat(x::AbstractFloat, n::Integer)Результат n итеративных применений prevfloat к x, если n >= 0, или -n применений nextfloat, если n < 0.
prevfloat(x::AbstractFloat)Возвращает наибольшее число с плавающей запятой y того же типа, что и x, такое что y < x. Если такого y не существует (например, если x равно -Inf или NaN), то возвращает x.
Base.isinteger — Functionisinteger(x) -> BoolПроверьте, равно ли x численно какому-либо целому числу.
Примеры
julia> isinteger(4.0)
trueBase.isreal — Functionisreal(x) -> BoolПроверьте, является ли x или все его элементы численно равными какому-либо действительному числу, включая бесконечности и NaN. isreal(x) истинно, если isequal(x, real(x)) истинно.
Примеры
julia> isreal(5.)
true
julia> isreal(1 - 3im)
false
julia> isreal(Inf + 0im)
true
julia> isreal([4.; complex(0,1)])
falseCore.Float32 — MethodFloat32(x [, mode::RoundingMode])Создает Float32 из x. Если x не может быть точно представлен, то mode определяет, как x округляется.
Примеры
julia> Float32(1/3, RoundDown)
0.3333333f0
julia> Float32(1/3, RoundUp)
0.33333334f0Смотрите RoundingMode для доступных режимов округления.
Core.Float64 — MethodFloat64(x [, mode::RoundingMode])Создает Float64 из x. Если x не может быть точно представлен, то mode определяет, как x округляется.
Примеры
julia> Float64(pi, RoundDown)
3.141592653589793
julia> Float64(pi, RoundUp)
3.1415926535897936Смотрите RoundingMode для доступных режимов округления.
Base.Rounding.rounding — Functionrounding(T)Получите текущий режим округления с плавающей запятой для типа T, контролирующий округление основных арифметических функций (+, -, *, / и sqrt) и преобразование типов.
Смотрите RoundingMode для доступных режимов.
Base.Rounding.setrounding — Methodsetrounding(T, mode)Установите режим округления для типа с плавающей запятой T, контролируя округление основных арифметических функций (+, -, *, / и sqrt) и преобразование типов. Другие численные функции могут давать неправильные или недопустимые значения при использовании режимов округления, отличных от значения по умолчанию RoundNearest.
Обратите внимание, что это в настоящее время поддерживается только для T == BigFloat.
Эта функция не является потокобезопасной. Она повлияет на код, выполняющийся на всех потоках, но ее поведение неопределенно, если она вызывается одновременно с вычислениями, использующими эту настройку.
Base.Rounding.setrounding — Methodsetrounding(f::Function, T, mode)Измените режим округления типа с плавающей запятой T на время выполнения f. Это логически эквивалентно:
old = rounding(T)
setrounding(T, mode)
f()
setrounding(T, old)Смотрите RoundingMode для доступных режимов округления.
Base.Rounding.get_zero_subnormals — Functionget_zero_subnormals() -> BoolВозвращает false, если операции с поднормальными числами с плавающей запятой ("денормалями") подчиняются правилам арифметики IEEE, и true, если они могут быть преобразованы в нули.
Эта функция влияет только на текущий поток.
Base.Rounding.set_zero_subnormals — Functionset_zero_subnormals(yes::Bool) -> BoolЕсли yes равно false, последующие операции с плавающей запятой следуют правилам арифметики IEEE для субнормальных значений ("денормалы"). В противном случае операции с плавающей запятой могут (но не обязаны) преобразовывать субнормальные входные или выходные значения в ноль. Возвращает true, если yes==true, но аппаратное обеспечение не поддерживает обнуление субнормальных чисел.
set_zero_subnormals(true) может ускорить некоторые вычисления на некотором оборудовании. Однако это может нарушить тождества, такие как (x-y==0) == (x==y).
Эта функция влияет только на текущий поток.
Integers
Base.count_ones — Functioncount_ones(x::Integer) -> IntegerКоличество единиц в двоичном представлении x.
Примеры
julia> count_ones(7)
3
julia> count_ones(Int32(-1))
32Base.count_zeros — Functioncount_zeros(x::Integer) -> IntegerКоличество нулей в двоичном представлении x.
Примеры
julia> count_zeros(Int32(2 ^ 16 - 1))
16
julia> count_zeros(-1)
0Base.leading_zeros — Functionleading_zeros(x::Integer) -> IntegerКоличество нулей, предшествующих двоичному представлению x.
Примеры
julia> leading_zeros(Int32(1))
31Base.leading_ones — Functionleading_ones(x::Integer) -> IntegerКоличество единиц, ведущих двоичное представление x.
Примеры
julia> leading_ones(UInt32(2 ^ 32 - 2))
31Base.trailing_zeros — Functiontrailing_zeros(x::Integer) -> IntegerКоличество нулей в конце двоичного представления x.
Примеры
julia> trailing_zeros(2)
1Base.trailing_ones — Functiontrailing_ones(x::Integer) -> IntegerКоличество единиц, следующих за двоичным представлением x.
Примеры
julia> trailing_ones(3)
2Base.isodd — Functionisodd(x::Number) -> BoolВозвращает true, если x является нечетным целым числом (то есть целым числом, не делящимся на 2), и false в противном случае.
Аргументы, не являющиеся Integer, требуют Julia 1.7 или более поздней версии.
Примеры
julia> isodd(9)
true
julia> isodd(10)
falseBase.iseven — Functioniseven(x::Number) -> BoolВозвращает true, если x является четным целым числом (то есть целым числом, делящимся на 2), и false в противном случае.
Аргументы, не являющиеся Integer, требуют Julia 1.7 или более поздней версии.
Примеры
julia> iseven(9)
false
julia> iseven(10)
trueCore.@int128_str — Macro@int128_str strПарсит str как Int128. Вызывает ArgumentError, если строка не является допустимым целым числом.
Примеры
julia> int128"123456789123"
123456789123
julia> int128"123456789123.4"
ERROR: LoadError: ArgumentError: invalid base 10 digit '.' in "123456789123.4"
[...]Core.@uint128_str — Macro@uint128_str strПарсит str как UInt128. Вызывает ArgumentError, если строка не является допустимым целым числом.
Примеры
julia> uint128"123456789123"
0x00000000000000000000001cbe991a83
julia> uint128"-123456789123"
ERROR: LoadError: ArgumentError: invalid base 10 digit '-' in "-123456789123"
[...]BigFloats and BigInts
Типы BigFloat и BigInt реализуют арифметику с плавающей запятой и целыми числами произвольной точности соответственно. Для 4d61726b646f776e2e436f64652822222c2022426967466c6f61742229_40726566 используется GNU MPFR library, а для 4d61726b646f776e2e436f64652822222c2022426967496e742229_40726566 используется GNU Multiple Precision Arithmetic Library (GMP).
Base.MPFR.BigFloat — MethodBigFloat(x::Union{Real, AbstractString} [, rounding::RoundingMode=rounding(BigFloat)]; [precision::Integer=precision(BigFloat)])Создайте число с плавающей запятой произвольной точности из x с точностью precision. Аргумент rounding указывает направление, в котором результат должен быть округлен, если преобразование не может быть выполнено точно. Если не указано, эти значения устанавливаются текущими глобальными значениями.
BigFloat(x::Real) то же самое, что и convert(BigFloat,x), за исключением случаев, когда x уже является BigFloat, в этом случае будет возвращено значение с точностью, установленной на текущую глобальную точность; convert всегда вернет x.
BigFloat(x::AbstractString) идентичен parse. Это предоставлено для удобства, поскольку десятичные литералы преобразуются в Float64 при разборе, поэтому BigFloat(2.1) может не дать ожидаемого результата.
Смотрите также:
precision как аргумент ключевого слова требует как минимум Julia 1.1. В Julia 1.0 precision является вторым позиционным аргументом (BigFloat(x, precision)).
Примеры
julia> BigFloat(2.1) # 2.1 здесь это Float64
2.100000000000000088817841970012523233890533447265625
julia> BigFloat("2.1") # ближайший BigFloat к 2.1
2.099999999999999999999999999999999999999999999999999999999999999999999999999986
julia> BigFloat("2.1", RoundUp)
2.100000000000000000000000000000000000000000000000000000000000000000000000000021
julia> BigFloat("2.1", RoundUp, precision=128)
2.100000000000000000000000000000000000007Base.precision — Functionprecision(num::AbstractFloat; base::Integer=2)
precision(T::Type; base::Integer=2)Получите точность числа с плавающей запятой, как определено эффективным количеством бит в мантиссе, или точность типа с плавающей запятой T (его текущий по умолчанию, если T является типом с переменной точностью, таким как BigFloat).
Если указан base, то он возвращает максимальное соответствующее количество цифр мантиссы в этой системе счисления.
Ключевое слово base требует как минимум Julia 1.8.
Base.MPFR.setprecision — Functionsetprecision([T=BigFloat,] precision::Int; base=2)Установите точность (в битах, по умолчанию) для арифметики T. Если указан base, то точность является минимально необходимой для получения как минимум precision цифр в заданной системе счисления.
Эта функция не является потокобезопасной. Она повлияет на код, выполняющийся на всех потоках, но ее поведение неопределенно, если она вызывается одновременно с вычислениями, использующими эту настройку.
Ключевое слово base требует как минимум Julia 1.8.
setprecision(f::Function, [T=BigFloat,] precision::Integer; base=2)Изменяет арифметическую точность T (в заданной base) на время выполнения f. Это логически эквивалентно:
old = precision(BigFloat)
setprecision(BigFloat, precision)
f()
setprecision(BigFloat, old)Часто используется как setprecision(T, precision) do ... end
Примечание: nextfloat(), prevfloat() не используют точность, указанную в setprecision.
Ключевое слово base требует как минимум Julia 1.8.
Base.GMP.BigInt — MethodBigInt(x)Создайте целое число произвольной точности. x может быть Int (или чем-то, что можно преобразовать в Int). Обычные математические операторы определены для этого типа, и результаты продвигаются к BigInt.
Экземпляры могут быть сконструированы из строк с помощью parse, или с использованием строкового литерала big.
Примеры
julia> parse(BigInt, "42")
42
julia> big"313"
313
julia> BigInt(10)^19
10000000000000000000Core.@big_str — Macro@big_str strПарсит строку в BigInt или BigFloat и выбрасывает ArgumentError, если строка не является допустимым числом. Для целых чисел _ разрешен в строке в качестве разделителя.
Примеры
julia> big"123_456"
123456
julia> big"7891.5"
7891.5
julia> big"_"
ERROR: ArgumentError: invalid number format _ for BigInt or BigFloat
[...]!!! предупреждение Использование @big_str для создания значений BigFloat может не привести к поведению, которое можно было бы наивно ожидать: как макрос, @big_str подчиняется глобальной точности (setprecision) и режиму округления (setrounding) так, как они были на время загрузки. Таким образом, функция, такая как () -> precision(big"0.3"), возвращает константу, значение которой зависит от значения точности в момент, когда функция была определена, а не от точности в момент, когда функция вызывается.