Читаем Julia. Язык программирования. Быстрый старт полностью

Числа с плавающей точкой вводятся и выводятся стандартным образом:


julia> 1.0

1.0


julia> 1.

1.0


julia> 0.5

0.5


julia> .5

0.5


julia> -1.23

–1.23


При необходимости можно использовать E-нотацию:


julia> 1e10

1.0e10


julia> 2.5e-4

0.00025


Все результаты из примеров выше имеют тип Float64 (тип по умолчанию). Если вы хотите ввести значение с типом Float32, то необходимо использовать f вместо e следующим образом:


julia> x = 0.5f0

0.5f0


julia> typeof(x)

Float32


julia> 2.5f-4

0.00025f0


Значение с типом Float16:


julia> Float16(4.)

Float16(4.0)


julia> 2*Float16(4.)

Float16(8.0)

Ноль с плавающей точкой

Числа с плавающей точкой имеют два нуля – положительный нуль и отрицательный нуль. Они равны друг другу, но имеют разные двоичные представления, что можно увидеть с помощью функции bitstring, которая дает буквальное битовое представление примитивного типа:


julia> 0.0 == -0.0

true


julia> bitstring(0.0)

"0000000000000000000000000000000000000000000000000000000000000000"


julia> bitstring(-0.0)

"1000000000000000000000000000000000000000000000000000000000000000"


Когда точности или размерности Float64 недостаточно, можно использовать специальный тип BigFloat:


julia> 2.0^100/4

3.1691265005705735e29


julia> BigFloat(2.0)^100/4

3.16912650057057350374175801344e+29


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


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


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 и следующим большим значением с плавающей точкой, при использовании в качестве аргумента типа числа с плавающей точкой:

Перейти на страницу:

Похожие книги

Цифровой журнал «Компьютерра» № 1
Цифровой журнал «Компьютерра» № 1

СОДЕРЖАНИЕ НОМЕРА:В Новый год — в новых форматах. Автор: Сергей Вильянов.Железо-2009: победы и достижения. Автор: Алексей Стародымов.BrowserLinux: проще некуда. Автор: Андрей Крупин.4G. Шанс России преодолеть цифровой разрыв. Автор: Юрий Домбровский.Beyerdynamic DTX 60 и MMX 100: ушки-люкс. Автор: Константин Иванов.Тысяча душ. Автор: Василий Щепетнев.Самые ожидаемые программные продукты 2010 года. Автор: Андрей Крупин.Новогодние подарки — советы по выбору гаджетов. Автор: Игорь Осколков.Корпус Zalman GS1000 Plus: пять с плюсом. Автор: Константин Иванов.2009 год глазами IT-бизнеса (обновлено). Автор: Марина Пелепец.Голубятня: Антихрист. Автор: Сергей Голубицкий.Приручение Коалы или два месяца с Ubuntu 9.10. Авторы: Григорий Рудницкий, Андрей Крупин.Обзор нетбука Manli iii M3. Автор: Игорь Осколков.Gazzetta, журнал, programma… Автор: Ваннах Михаил.Можно ли нарисовать улицу на картах Nokia? Автор: Георгий Киселев.Новогодние подарки — советы по выбору нетбуков и ноутбуков. Автор: Игорь Осколков.Программные алкотестеры. Автор: Андрей Крупин.Будущее Интернета. Автор: Михаил Карпов.Ни слова о Жомини. Автор: Василий Щепетнев.Беседы о современной физике. Автор: Алла Аршинова.Что готовит нам 2010 год. Автор: Алексей Лукацкий.Голубятня: Нефилимы. Автор: Сергей Голубицкий.Новогодние украшательства Windows. Автор: Андрей Крупин.Компьютеррные события года. Авторы: Сергей Вильянов, Василий Щепетнев, Юрий Ревич, Анатолий Вассерман, Козловский Евгений, Андрей Крупин, Михаил Карпов, Алексей Стародымов, Игорь Осколков.Море возможностей. Автор: Сергей Еремин.Logitech: необычная гарантия. Автор: Алексей Стародымов.Новогодние подарки — советы по выбору телефонов и смартфонов. Автор: Игорь Осколков.

Журнал «Компьютерра» , Компьютерра

Зарубежная компьютерная, околокомпьютерная литература / Прочая компьютерная литература / Книги по IT