Julia 中的数字及其类型
Julia 是一种高级、动态、通用的编程语言,可用于编写软件应用程序,非常适合数据分析和计算科学。数字在任何编程语言中都很重要。 Julia 中的数字分为两种类型:整数和浮点数。 Julia 提供了广泛的原始数字类型。这些内置的数值数据类型帮助 Julia 充分利用计算资源。 Julia 还为 Arbitrary Precision Arithmetic 提供软件支持,该算法可以处理难以在本地硬件表示中表示的数字运算。但是,对任意精度算术的支持是以降低性能为代价的。复数和有理数是在原始数字类型之上定义的。
以下是 Julia 的原始数字类型:
- 整数
Type Signed Number of bits Range Int8 Yes 8 -2^7 to 2^7 – 1 UInt8 No 8 0 to 2^8-1 Int16 Yes 16 -2^15 to 2^15-1 UInt16 No 16 0 to 2^16 – 1 Int32 Yes 32 -2^31 to 2^31-1 UInt32 No 32 0 to 2^32-1 Int64 Yes 64 -2^63 to 2^63-1 UInt64 No 64 0 to 2^64 – 1 Int128 Yes 128 -2^127 to 2^127 – 1 UInt128 No 128 0 to 2^128 – 1 Bool N/A 8 false(0) and true(1) - 浮点数字
Type Precision Number of bits Float16 half 16 Float32 single 32 Float64 double 64
整数
整数字面量的默认类型取决于系统是 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"
特殊浮点值
Name | Type | Description |
---|---|---|
positive infinity | Inf16, Inf32, Inf | a value greater than all finite floating-point values |
negative infinity | -Inf16, -Inf32, -Inf | a value less than all finite floating-point values |
not a number | NaN16, NaN32, NaN | a 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)
输出: