Вадим Никитин

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


Скачать книгу

x = 0x123

      0x0123

      julia> typeof(x)

      UInt16

      julia> x = 0x1234567

      0x01234567

      julia> typeof(x)

      UInt32

      julia> x = 0x123456789abcdef

      0x0123456789abcdef

      julia> typeof(x)

      UInt64

      julia> x = 0x11112222333344445555666677778888

      0x11112222333344445555666677778888

      julia> typeof(x)

      UInt128

      Значения, слишком большие для типов Int128, UInt128, при вводе получат специальный тип BigInt:

      julia> typeof(100000000000000000000000000000000000000)

      Int128

      julia> typeof(1000000000000000000000000000000000000000)

      BigInt

      julia> typeof(0xffffffffffffffffffffffffffffffff)

      UInt128

      julia> typeof(0xfffffffffffffffffffffffffffffffff)

      BigInt

      Это не беззнаковый тип, но это единственный встроенный тип, достаточно большой для представления таких больших целых значений.

      Поведение при переполнении

      В Julia превышение максимального представляемого значения данного типа приводит к циклическому поведению. Пример (функции typemax(), typemin(), возвращают максимальное и минимальное значения для заданного типа, == оператор равенства):

      julia> x = typemax(Int64)

      9223372036854775807

      julia> x+1

      –9223372036854775808

      julia> x + 1 == typemin(Int64)

      true

      julia> x = typemax(UInt64)

      0xffffffffffffffff

      julia> x+1

      0x0000000000000000

      julia> x + 1 == typemin(UInt64)

      true

      В тех случаях, когда переполнение возможно, рекомендуется производить проверку на цикличное поведение. В противном случае используйте тип BigInt арифметики произвольной точности. Ниже приведен пример поведения при переполнении и как его можно решить с помощью BigInt():

      julia> 10^19

      –8446744073709551616

      julia> BigInt(10)^19

      10000000000000000000

      Числа с плавающей точкой

      Типы чисел с плавающей точкой в 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>