Julia. Язык программирования. Быстрый старт - страница 12

Шрифт
Интервал



julia> (typemin(Float16),typemax(Float16))

(-Inf16, Inf16)


julia> (typemin(Float32),typemax(Float32))

(-Inf32, Inf32)


julia> (typemin(Float64),typemax(Float64))

(-Inf, Inf)


Результатом будут специальные значения – отрицательная и положительная бесконечности. Значения чисел превышающих числовой диапазон типа также будут заменены на специальные значения:


julia> 4.2^1000

Inf


julia> -4.2^1000

–Inf

Специальные значения

Существует три определенных стандартных значения с плавающей точкой, которые не соответствуют ни одной точке на линии вещественных чисел:





По стандарту IEEE 754, эти значения с плавающей точкой являются результатами определенных арифметических операций:


julia> 1/0

Inf


julia> -5/0

–Inf


julia> 0.000001/0

Inf


julia> 0/0

NaN


julia> 1/Inf

0.0


julia> 1/-Inf

–0.0


julia> -1/Inf

–0.0


julia> -1/-Inf

0.0


julia> 500 + Inf

Inf


julia> 500 – Inf

–Inf


julia> Inf + Inf

Inf


julia> -Inf -Inf

–Inf


julia> Inf – Inf

NaN


julia> Inf * Inf

Inf


julia> Inf*-Inf

–Inf


julia> -Inf * -Inf

Inf


julia> Inf / Inf

NaN


julia> Inf /-Inf

NaN


julia> -Inf /Inf

NaN


julia> -Inf /-Inf

NaN


julia> 0 * Inf

NaN


julia> 0 *-Inf

NaN

Тип NaN

NaN не равно, не меньше и не больше чего-либо, включая самого себя:


julia> NaN == NaN

false


julia> NaN != NaN

true


julia> NaN < NaN

false


julia> NaN > NaN

false


Это может вызвать проблемы, например при работе с массивами:


julia> [1 NaN] == [1 NaN]

false


Функции Julia для работы со специальными значениями:





Функция isequal() считает NaNs равными друг другу:

julia> isequal(NaN, NaN)

true


julia> isequal([1 NaN], [1 NaN])

true


julia> isequal(NaN, NaN32)

true


Функцию isequal() можно также использовать для различения знаковых нулей:

julia> -0.0 == 0.0

true


julia> isequal(-0.0, 0.0)

false

Машинный эпсилон

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


Функция eps() в Julia дает расстояние между 1.0 и следующим большим значением с плавающей точкой, при использовании в качестве аргумента типа числа с плавающей точкой: