Spec-Zone.ru › Julia 1.10

Числа

Стандартные числовые типы

Дерево типов всех подтипов 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)
      └─ Irrational

Абстрактные числовые типы

Core.NumberТип

Number

Абстрактный супертип для всех числовых типов.

исходный код

Core.RealТип

Real <: Number

Абстрактный супертип для всех действительных чисел.

исходный код

Core.AbstractFloatТип

AbstractFloat <: Real

Абстрактный супертип для всех чисел с плавающей точкой.

исходный код

Core.IntegerТип

Integer <: Real

Абстрактный супертип для всех целых чисел.

исходный код

Core.SignedТип

Signed <: Integer

Абстрактный супертип для всех целых чисел со знаком.

исходный код

Core.UnsignedТип

Unsigned <: Integer

Абстрактный супертип для всех целых чисел без знака.

исходный код

Base.AbstractIrrationalТип

AbstractIrrational <: 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.

исходный код

Конкретные числовые типы

Core.Float16Тип

Float16 <: AbstractFloat

16-битный тип чисел с плавающей точкой (стандарт IEEE 754).

Бинарный формат: 1 бит знака, 5 бит экспоненты, 10 бит мантиссы.

исходный код

Core.Float32Тип

Float32 <: AbstractFloat

32-битный тип чисел с плавающей точкой (стандарт IEEE 754).

Бинарный формат: 1 бит знака, 8 бит экспоненты, 23 бита мантиссы.

исходный код

Core.Float64Тип

Float64 <: AbstractFloat

64-битный тип чисел с плавающей точкой (стандарт IEEE 754).

Бинарный формат: 1 бит знака, 11 бит экспоненты, 52 бита мантиссы.

исходный код

Base.MPFR.BigFloatТип

BigFloat <: AbstractFloat

Тип чисел с плавающей точкой произвольной точности.

исходный код

Core.BoolТип

Bool <: Integer

Булевый тип, содержащий значения true и false.

Bool является видом числа: false численно равно 0, а true численно равно 1. Кроме того, false действует как мультипликативный «сильный ноль»:

julia> false == 0
true

julia> true == 1
true

julia> 0 * NaN
NaN

julia> false * NaN
0.0

См. также: digits, iszero, NaN.

исходный код

Core.Int8Тип

Int8 <: Signed

8-битный целочисленный тип со знаком.

исходный код

Core.UInt8Тип

UInt8 <: Unsigned

8-битный целочисленный тип без знака.

исходный код

Core.Int16Тип

Int16 <: Signed

16-битный целочисленный тип со знаком.

исходный код

Core.UInt16Тип

UInt16 <: Unsigned

16-битный целочисленный тип без знака.

исходный код

Core.Int32Тип

Int32 <: Signed

32-битный целочисленный тип со знаком.

исходный код

Core.UInt32Тип

UInt32 <: Unsigned

32-битный целочисленный тип без знака.

исходный код

Core.Int64Тип

Int64 <: Signed

64-битный целочисленный тип со знаком.

исходный код

Core.UInt64Тип

UInt64 <: Unsigned

64-битный целочисленный тип без знака.

исходный код

Core.Int128Тип

Int128 <: Signed

128-битный целочисленный тип со знаком.

исходный код

Core.UInt128Тип

UInt128 <: Unsigned

128-битный целочисленный тип без знака.

исходный код

Base.GMP.BigIntТип

BigInt <: Signed

Целочисленный тип произвольной точности.

исходный код

Base.ComplexТип

Complex{T<:Real} <: Number

Тип комплексных чисел с действительной и мнимой частями типа T.

ComplexF16, ComplexF32 и ComplexF64 являются псевдонимами для Complex{Float16}, Complex{Float32} и Complex{Float64} соответственно.

См. также: Real, complex, real.

исходный код

Base.RationalТип

Rational{T<:Integer} <: Real

Тип рациональных чисел с числителем и знаменателем типа T. Рациональные числа проверяются на переполнение.

исходный код

Base.IrrationalТип

Irrational{sym} <: AbstractIrrational

Тип числа, представляющий точное иррациональное значение, обозначаемое символом sym, например π, ℯ и γ.

См. также AbstractIrrational.

исходный код

Форматы данных

Base.digitsФункция

digits([T<:Integer], n::Integer; base::T = 10, pad::Integer = 1)

Возвращает массив с типом элементов T (по умолчанию Int) цифр числа n в заданной системе счисления, необязательно дополненный нулями до заданного размера. Более значимые цифры находятся в индексах с более высокими значениями, так что n == sum(digits[k]*base^(k-1) for k=1:length(digits)).

См. также ndigits, digits!, и для двоичной системы счисления также 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))
true
исходный код

Base.digits!Функция

digits!(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
 0
исходный код

Base.bitstringФункция

bitstring(n)

Строка, представляющая буквальное битовое представление примитивного типа.

См. также count_ones, count_zeros, digits.

Примеры

julia> bitstring(Int32(4))
"00000000000000000000000000000100"

julia> bitstring(2.2)
"0100000000000001100110011001100110011001100110011001100110011010"
исходный код

Base.parseФункция

parse(::Type{Platform}, triplet::AbstractString)

Парсит строку с тройкой платформы обратно в объект Platform.

исходный код
parse(type, str; base)

Парсит строку как число. Для типов Integer, можно указать основание (по умолчанию 10). Для чисел с плавающей точкой строка парсится как десятичное число с плавающей точкой. Типы Complex парсятся из десятичных строк вида "R±Iim" как Complex(R,I) нужного типа; "i" или "j" также могут использоваться вместо "im", и "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.5im
исходный код

Base.tryparseФункция

tryparse(type, str; base)

Аналогично parse, но возвращает либо значение запрошенного типа, либо nothing, если строка не содержит корректного числа.

исходный код

Base.bigФункция

big(x)

Преобразует число в представление максимальной точности (обычно BigInt или BigFloat). См. BigFloat для информации о некоторых проблемах с числами с плавающей точкой.

исходный код

Base.signedФункция

signed(T::Integer)

Преобразует целочисленный битовый тип в соответствующий ему знаковый тип того же размера.

Примеры

julia> signed(UInt16)
Int16
julia> signed(UInt64)
Int64
исходный код
signed(x)

Преобразует число в знаковое целое число. Если аргумент беззнаковый, он переинтерпретируется как знаковый без проверки на переполнение.

См. также: unsigned, sign, signbit.

исходный код

Base.unsignedФункция

unsigned(T::Integer)

Преобразует целочисленный битовый тип в соответствующий ему беззнаковый тип того же размера.

Примеры

julia> unsigned(Int16)
UInt16
julia> unsigned(UInt64)
UInt64
исходный код

Base.floatМетод

float(x)

Преобразует число или массив в тип данных с плавающей точкой.

См. также: complex, oftype, convert.

Примеры

julia> float(1:1000)
1.0:1.0:1000.0

julia> float(typemax(Int32))
2.147483647e9
исходный код

Base.Math.significandФункция

significand(x)

Извлечь мантиссу (значимую часть) числа с плавающей точкой. Если x — ненулевое конечное число, результат будет числом того же типа и знака, что и x, и абсолютное значение которого лежит в интервале $[1,2)$. В противном случае возвращается x.

Примеры

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Функция

exponent(x) -> Int

Возвращает наибольшее целое число y такое, что 2^y ≤ abs(x). Для нормализованного числа с плавающей точкой x это соответствует показателю степени числа x.

Примеры

julia> exponent(8)
3

julia> exponent(64//1)
6

julia> exponent(6.5)
2

julia> exponent(16.0)
4

julia> exponent(3.142e-4)
-12
исходный код

Base.complexМетод

complex(r, [i])

Преобразование вещественных чисел или массивов в комплексные. i по умолчанию равно нулю.

Примеры

julia> complex(7)
7 + 0im

julia> complex([1, 2, 3])
3-element Vector{Complex{Int64}}:
 1 + 0im
 2 + 0im
 3 + 0im
исходный код

Base.bswapФункция

bswap(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Функция

hex2bytes(itr)

Принимая итерируемый itr ASCII-кодов последовательности шестнадцатеричных цифр, возвращает Vector{UInt8} байтов, соответствующих двоичному представлению: каждая последовательная пара шестнадцатеричных цифр в itr даёт значение одного байта в возвращаемом векторе.

Длина itr должна быть чётной, и возвращаемый массив имеет половину длины itr . См. также hex2bytes! для варианта in-place, и 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
 0xef
исходный код

Base.hex2bytes!Функция

hex2bytes!(dest::AbstractVector{UInt8}, itr)

Преобразуйте итерируемый itr байтов, представляющих шестнадцатеричную строку, в её двоичное представление, аналогично hex2bytes, за исключением того, что вывод записывается непосредственно в dest. Длина dest должна быть вдвое меньше длины itr.

Вызов hex2bytes! с итераторами, генерирующими UInt8, требует версии 1.7. В более ранних версиях можно собрать итерируемый объект перед вызовом.

исходный код

Base.bytes2hexФункция

bytes2hex(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"
исходный код

Общие числовые функции и константы

Base.oneФункция

one(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))
1
исходный код

Base.oneunitФункция

oneunit(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 day
исходный код

Base.zeroФункция

zero(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.0
исходный код

Base.imКонстанта

im

Мнимая единица.

См. также: imag, angle, complex.

Примеры

julia> im * im
-1 + 0im

julia> (2.0 + 3im)^2
-5.0 + 12.0im
исходный код

Base.MathConstants.piКонстанта

π
pi

Константа пи.

Unicode π можно набрать, набрав \pi и нажав Tab в Julia REPL и во многих редакторах.

См. также: sinpi, sincospi, deg2rad.

Примеры

julia> pi
π = 3.1415926535897...

julia> 1/2pi
0.15915494309189535
исходный код

Base.MathConstants.ℯКонстанта

ℯ
e

Константа ℯ.

Unicode ℯ можно набрать, набрав \euler и нажав Tab в Julia REPL и во многих редакторах.

См. также: exp, cis, cispi.

Примеры

julia> ℯ
ℯ = 2.7182818284590...

julia> log(ℯ)
1

julia> ℯ^(im)π ≈ -1
true
исходный код

Base.MathConstants.catalanКонстанта

catalan

Постоянная Каталана.

Примеры

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Константа

γ
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.5772078382499133
исходный код

Base.MathConstants.goldenКонстанта

φ
golden

Золотое сечение.

Примеры

julia> Base.MathConstants.golden
φ = 1.6180339887498...

julia> (2ans - 1)^2 ≈ 5
true
исходный код

Base.InfКонстанта

Inf, Inf64

Положительная бесконечность типа Float64.

См. также: isfinite, typemax, NaN, Inf32.

Примеры

julia> π/0
Inf

julia> +1.0 / -0.0
-Inf

julia> ℯ^-Inf
0.0
исходный код

Base.Inf64Константа

Inf, Inf64

Положительная бесконечность типа Float64.

См. также: isfinite, typemax, NaN, Inf32.

Примеры

julia> π/0
Inf

julia> +1.0 / -0.0
-Inf

julia> ℯ^-Inf
0.0
исходный код

Base.Inf32Константа

Inf32

Положительная бесконечность типа Float32.

исходный код

Base.Inf16Константа

Inf16

Положительная бесконечность типа Float16.

исходный код

Base.NaNКонстанта

NaN, NaN64

Значение «не число» типа Float64.

См. также: isnan, missing, NaN32, Inf.

Примеры

julia> 0/0
NaN

julia> Inf - Inf
NaN

julia> NaN == NaN, isequal(NaN, NaN), NaN === NaN
(false, true, true)
исходный код

Base.NaN64Константа

NaN, NaN64

Значение «не число» типа Float64.

См. также: isnan, missing, NaN32, Inf.

Примеры

julia> 0/0
NaN

julia> Inf - Inf
NaN

julia> NaN == NaN, isequal(NaN, NaN), NaN === NaN
(false, true, true)
исходный код

Base.NaN32Константа

NaN32

Значение «не число» типа Float32.

исходный код

Base.NaN16Константа

NaN16

Значение «не число» типа Float16.

исходный код

Base.issubnormalФункция

issubnormal(f) -> Bool

Проверка, является ли число с плавающей точкой субнормальным.

Число с плавающей точкой IEEE является субнормальным, когда биты его порядка равны нулю, а мантисса не равна нулю.

Примеры

julia> floatmin(Float32)
1.1754944f-38

julia> issubnormal(1.0f-37)
false

julia> issubnormal(1.0f-38)
true
исходный код

Base.isfiniteФункция

isfinite(f) -> Bool

Проверка, является ли число конечным.

Примеры

julia> isfinite(5)
true

julia> isfinite(NaN32)
false
исходный код

Base.isinfФункция

isinf(f) -> Bool

Проверка, является ли число бесконечным.

См. также: Inf, iszero, isfinite, isnan.

исходный код

Base.isnanФункция

isnan(f) -> Bool

Проверка, является ли значение числа NaN (не число), неопределённым значением, которое не является ни бесконечностью, ни конечным числом.

См. также: iszero, isone, isinf, ismissing.

исходный код

Base.iszeroФункция

iszero(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])
true
исходный код

Base.isoneФункция

isone(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])
true
исходный код

Base.nextfloatФункция

nextfloat(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Функция

prevfloat(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Функция

isinteger(x) -> Bool

Проверка, численно ли x равно целому числу.

Примеры

julia> isinteger(4.0)
true
исходный код

Base.isrealФункция

isreal(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)])
false
исходный код

Core.Float32Метод

Float32(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Метод

Float64(x [, mode::RoundingMode])

Создание Float64 из x. Если x не точно представимо, то mode определяет, как x округляется.

Примеры

julia> Float64(pi, RoundDown)
3.141592653589793

julia> Float64(pi, RoundUp)
3.1415926535897936

См. RoundingMode для доступных режимов округления.

исходный код

Base.Rounding.roundingФункция

rounding(T)

Получение текущего режима округления чисел с плавающей точкой для типа T, управляющего округлением основных арифметических функций (+, -, *, / и sqrt) и преобразованием типов.

См. RoundingMode для доступных режимов.

исходный код

Base.Rounding.setroundingМетод

setrounding(T, mode)

Установите режим округления для плавающей точки типа T, контролируя округление основных арифметических функций (+, -, *, / и sqrt) и преобразование типов. Другие числовые функции могут давать некорректные или недопустимые значения при использовании режимов округления, отличных от значения по умолчанию RoundNearest.

Обратите внимание, что в настоящее время это поддерживается только для T == BigFloat.

Эта функция не потокобезопасна. Она повлияет на код, выполняемый во всех потоках, но её поведение неопределено, если её вызвать одновременно с вычислениями, использующими это значение.

источник

Base.Rounding.setroundingМетод

setrounding(f::Function, T, mode)

Измените режим округления для типа с плавающей точкой T на всё время f. Логически эквивалентно:

old = rounding(T)
setrounding(T, mode)
f()
setrounding(T, old)

См. RoundingMode для доступных режимов округления.

источник

Base.Rounding.get_zero_subnormalsФункция

get_zero_subnormals() -> Bool

Возвращает false если операции с поднормальными значениями с плавающей точкой ("денормалями") подчиняются правилам IEEE-арифметики, и true если они могут быть преобразованы в нули.

Эта функция влияет только на текущий поток.

источник

Base.Rounding.set_zero_subnormalsФункция

set_zero_subnormals(yes::Bool) -> Bool

Если yes равно false, последующие операции с плавающей точкой следуют правилам IEEE-арифметики для поднормальных значений ("денормалей"). В противном случае операции с плавающей точкой могут (но не обязаны) преобразовывать поднормальные входные или выходные данные в ноль. Возвращает true за исключением случая, когда yes==true , но оборудование не поддерживает обнуление поднормальных чисел.

set_zero_subnormals(true) может ускорить некоторые вычисления на некоторых аппаратных средствах. Однако это может нарушить тождества, такие как (x-y==0) == (x==y).

Эта функция влияет только на текущий поток.

источник

Целые числа

Base.count_onesФункция

count_ones(x::Integer) -> Integer

Количество единиц в двоичном представлении x.

Примеры

julia> count_ones(7)
3

julia> count_ones(Int32(-1))
32
источник

Base.count_zerosФункция

count_zeros(x::Integer) -> Integer

Количество нулей в двоичном представлении x.

Примеры

julia> count_zeros(Int32(2 ^ 16 - 1))
16

julia> count_zeros(-1)
0
источник

Base.leading_zerosФункция

leading_zeros(x::Integer) -> Integer

Количество нулей, предшествующих двоичному представлению x.

Примеры

julia> leading_zeros(Int32(1))
31
источник

Base.leading_onesФункция

leading_ones(x::Integer) -> Integer

Количество единиц, предшествующих двоичному представлению x.

Примеры

julia> leading_ones(UInt32(2 ^ 32 - 2))
31
источник

Base.trailing_zerosФункция

trailing_zeros(x::Integer) -> Integer

Количество нулей, следующих за двоичным представлением x.

Примеры

julia> trailing_zeros(2)
1
источник

Base.trailing_onesФункция

trailing_ones(x::Integer) -> Integer

Количество единиц, следующих за двоичным представлением x.

Примеры

julia> trailing_ones(3)
2
источник

Base.isoddФункция

isodd(x::Number) -> Bool

Возвращает true если x — это нечётное целое число (то есть целое число, не делимое на 2), и false в противном случае.

Не-Integer аргументы требуют Julia 1.7 или более поздней версии.

Примеры

julia> isodd(9)
true

julia> isodd(10)
false
источник

Base.isevenФункция

iseven(x::Number) -> Bool

Возвращает true если x — это чётное целое число (то есть целое число, делимое на 2), и false в противном случае.

Не-Integer аргументы требуют Julia 1.7 или более поздней версии.

Примеры

julia> iseven(9)
false

julia> iseven(10)
true
источник

Core.@int128_strМакрос

@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Макрос

@uint128_str str

Разбор str как UInt128. Выбрасывает ArgumentError если строка не является допустимым целым числом.

Примеры

julia> uint128"123456789123"
0x00000000000000000000001cbe991a83

julia> uint128"-123456789123"
ERROR: LoadError: ArgumentError: invalid base 10 digit '-' in "-123456789123"
[...]
источник

Большие числа с плавающей точкой и большие целые числа

Типы BigFloat и BigInt реализуют арифметику с произвольной точностью для чисел с плавающей точкой и целых чисел соответственно. Для BigFloat используется библиотека GNU MPFR, а для BigInt — библиотека GNU Multiple Precision Arithmetic Library (GMP).

Base.MPFR.BigFloatМетод

BigFloat(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) может не дать ожидаемого результата.

См. также:

  • @big_str
  • rounding и setrounding
  • precision и setprecision

precision в качестве ключевого аргумента требует как минимум Julia 1.1. В Julia 1.0 precision является вторым позиционным аргументом (BigFloat(x, precision)).

Примеры

julia> BigFloat(2.1) # 2.1 here is a Float64
2.100000000000000088817841970012523233890533447265625

julia> BigFloat("2.1") # the closest BigFloat to 2.1
2.099999999999999999999999999999999999999999999999999999999999999999999999999986

julia> BigFloat("2.1", RoundUp)
2.100000000000000000000000000000000000000000000000000000000000000000000000000021

julia> BigFloat("2.1", RoundUp, precision=128)
2.100000000000000000000000000000000000007
источник

Base.precisionФункция

precision(num::AbstractFloat; base::Integer=2)
precision(T::Type; base::Integer=2)

Получить точность числа с плавающей запятой, определённую эффективным числом битов в мантиссе, или точность типа числа с плавающей запятой T (его текущее значение по умолчанию, если T — тип с переменной точностью, например BigFloat).

Если base указано, то возвращается максимальное соответствующее количество значащих цифр в указанной системе счисления.

Ключевое слово base требует как минимум Julia 1.8.

исходный код

Base.MPFR.setprecisionФункция

setprecision([T=BigFloat,] precision::Int; base=2)

Установить точность (в битах по умолчанию), используемую для T арифметики. Если base указано, то точность — минимальная, необходимая для обеспечения как минимум precision цифр в указанной base.

Эта функция не потокобезопасна. Она повлияет на код, выполняющийся на всех потоках, но её поведение не определено, если она вызывается одновременно с вычислениями, использующими это значение.

Ключевое слово 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Метод

BigInt(x)

Создаёт целое число произвольной точности. x может быть Int (или чем-либо, что может быть преобразовано в Int). Обычные математические операторы определены для этого типа, и результаты повышаются до BigInt.

Экземпляры могут быть созданы из строк с помощью parse или используя big строковый литерал.

Примеры

julia> parse(BigInt, "42")
42

julia> big"313"
313

julia> BigInt(10)^19
10000000000000000000
исходный код

Core.@big_strМакрос

@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
[...]
исходный код

© 2009–2024 Jeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors
Licensed under the MIT License.
https://docs.julialang.org/en/v1.10/base/numbers/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API