📜  Julia 中的数字及其类型

📅  最后修改于: 2022-05-13 01:55:47.295000             🧑  作者: Mango

Julia 中的数字及其类型

Julia 是一种高级、动态、通用的编程语言,可用于编写软件应用程序,非常适合数据分析和计算科学。数字在任何编程语言中都很重要。 Julia 中的数字分为两种类型:整数和浮点数。 Julia 提供了广泛的原始数字类型。这些内置的数值数据类型帮助 Julia 充分利用计算资源。 Julia 还为 Arbitrary Precision Arithmetic 提供软件支持,该算法可以处理难以在本地硬件表示中表示的数字运算。但是,对任意精度算术的支持是以降低性能为代价的。复数和有理数是在原始数字类型之上定义的。

以下是 Julia 的原始数字类型:

  1. 整数
    TypeSignedNumber of bitsRange
    Int8Yes8-2^7 to 2^7 – 1
    UInt8No80 to 2^8-1
    Int16Yes16-2^15 to 2^15-1
    UInt16No160 to 2^16 – 1
    Int32Yes32-2^31 to 2^31-1
    UInt32No320 to 2^32-1
    Int64Yes64-2^63 to 2^63-1
    UInt64No640 to 2^64 – 1
    Int128Yes128-2^127 to 2^127 – 1
    UInt128No1280 to 2^128 – 1
    BoolN/A8false(0) and true(1)
  2. 浮点数字
    TypePrecisionNumber of bits
    Float16half16
    Float32single32
    Float64double64

整数

整数字面量的默认类型取决于系统是 32 位还是 64 位。变量 Sys.WORD_SIZE 表示系统是 32 位还是 64 位:

println(Sys.WORD_SIZE)
println(typeof(123))

输出:

但是,无法使用 32 位表示的较大整数字面量使用 64 位表示,无论系统类型如何。
无符号整数使用 0x 前缀和十六进制数字 0-9a-f 或 0-9A-F 表示。无符号整数的大小由使用的十六进制数决定。

println(typeof(0x12))
println(typeof(0x123))
println(typeof(0x1234567))
println(typeof(0x123456789abcd))
println(typeof(0x1112223333444555566677788))

输出:

Julia 也支持二进制和八进制字面量。

println(typeof(0b10))
println(typeof(0o10))
println(0b10)
println(0o10)

输出:

整数的最小值-最大值
println(typemin(Int8), ' ', typemax(Int8))
println(typemin(Int16), ' ', typemax(Int16))
println(typemin(Int32), ' ', typemax(Int32))
println(typemin(Int64), ' ', typemax(Int64))
println(typemin(Int128), ' ', typemax(Int128))

输出:

浮点数字

浮点数以标准格式表示。 Float32 没有字面量格式,但我们可以通过编写 'f' 或显式类型转换将值转换为 Float32。

println(typeof(1.0))
println(typeof(.5))
println(typeof(-1.23))
println(typeof(0.5f0))
println(2.5f-4)
println(typeof(2.5f-4))
println(typeof(Float32(-1.5)))

输出:

浮点零

浮点数有一个正零和一个负零,它们彼此相等,但具有不同的二进制表示。

julia> 0.0 == -0.0
true

julia> bitstring(0.0)
"0000000000000000000000000000000000000000000000000000000000000000"

julia> bitstring(-0.0)
"1000000000000000000000000000000000000000000000000000000000000000"
特殊浮点值
NameTypeDescription
positive infinityInf16, Inf32, Infa value greater than all finite floating-point values
negative infinity-Inf16, -Inf32, -Infa value less than all finite floating-point values
not a numberNaN16, NaN32, NaNa value not comparable to any floating point values including itself

复数

全局常数“im”用于表示复数 i,其中 i 是 -1 的平方根。

println(typeof(1+2im))
  
# performing mathematical operations
  
println()
println((1 + 2im) + (2 + 3im))
println((5 + 5im) - (3 + 2im))
println((5 + 2im) * (3 + 2im))
println((1 + 2im) / (1 - 2im))
println(3(2 - 5im)^2)

输出:

有理数

Julia 有理数来表示整数的精确比率。有理数是使用 //运算符构造的。

println(typeof(6//9))
println(6//9)
println(-6//9)
println(-6//-9)
println(5//8 + 3//12)
println(6//5 - 10//13)
println(5//8 * 3//12)
println(6//5 / 10//3)

输出: