Julia 数据类型

布尔类型

布尔类型(boolean)是指示条件是否为真的类型。布尔值既可以用 true/false(真 / 假) 表示(最终会浓缩为 1 或 0),也可以仅用表示类型条件的整数(1 或 0)表示。

  1. typeof(true)
  2. Bool

同样,也可以在 Julia 语言中将布尔值断言为表示 ture 或 false 的整数:

  1. Bool(1)
  2. true

整数类型

编程中的整数(integer)数据类型与数学中的整数数据类型相似。整数是没有小数值的整数。通常,当使用 Julia 中的整数时,将使用 Int64 数据类型。这意味着整数有 64 位。另外,还有 Int32 和 BigInt。

  1. typeof(5)
  2. Int64

Julia中的整数类型

类型 有无符号 Number of bits Smallest value Largest value
Int8 8 -2^7 2^7 - 1
UInt8 8 0 2^8 - 1
Int16 16 -2^15 2^15 - 1
UInt16 16 0 2^16 - 1
Int32 32 -2^31 2^31 - 1
UInt32 32 0 2^32 - 1
Int64 64 -2^63 2^63 - 1
UInt64 64 0 2^64 - 1
Int128 128 -2^127 2^127 - 1
UInt128 128 0 2^128 - 1
Bool N/A 8 false (0) true (1)

整数标准表示方式:

julia> 1
1
julia> 1234
1234

整数文本的默认类型取决于目标系统是32位体系结构还是64位体系结构:

# 32-bit system:
julia> typeof(1)
Int32
# 64-bit system:
julia> typeof(1)
Int64

Julia内部变量 Sys.WORD_SIZE 指示目标系统是32位还是64位:

# 32-bit system:
julia> Sys.WORD_SIZE
32
# 64-bit system:
julia> Sys.WORD_SIZE
64

Julia还定义了类型IntUInt,它们分别是系统的有符号和无符号本机整数类型的别名:

# 32-bit system:
julia> Int
Int32
julia> UInt
UInt32
# 64-bit system:
julia> Int
Int64
julia> UInt
UInt64

不能仅使用32位表示但可以用64位表示的较大整数字面值总是创建64位整数,这与系统类型无关:

# 32-bit or 64-bit system:
julia> typeof(3000000000)
Int64

浮点数类型

浮点数(float)是指在小数点以外有第二个数字的整数,或者说是一个小数值。浮点数可以被认为是两个独立的数据,整数在小数值之前,小数值在整数之后。

typeof(5.5)
Float64

Julia中的浮点类型

Type Precision Number of bits
Float16 half 16
Float32 single 32
Float64 double 64

:::warning Julia在原始数字类型的基础上,全面支持复杂和有理数。用户可灵活的扩展的类型升级系统,所有数字类型都可以自然地互操作而无需显式转换。 ::: :::tips Julia为任意精度的算术提供了软件支持,它可以处理在本机硬件表示中无法有效表示的数值的操作,但以相对较慢的性能为代价。 :::

复数类型和大数类型

在 Julia 语言中,复数(complex)类型浮点数经常出现。复数类型浮点数就是一个浮点数,它的值既有虚数又有实数。值得注意的是,这意味着这些类型不是真实的。通常,科学计算需要的是一个真实的数据类型,因此,可能需要声明一些复数类型浮点数。

typeof(5.5 + 5.5im)
Complex(Float64)

该数据类型的第二部分中的“im”表示前面的数字是虚数。
另一方面,大数(big)类型是实数,但超出了大多数 64 位应用程序的能力,而且是精确的。这是 Julia 语言的一个重要的独特性,因为它允许通过多个函数传递巨大的整数和浮点数据类型而不出现问题,这是很少有编程语言能够做到的。

# Big Int
big(51515235151351335)
# Big Float
big(5.4172473471347374147)

符号类型

符号(symbol)数据类型是 Julia 语言从函数范式中提取的另一个伟大的东西。符号可以用来表示从参数到字典键的所有内容,而且它们在工作表中相当出色。通常,符号数据类型在编程语言中是一件很棒的事情,因为它基本上可以用作任何东西的标识,因此得名符号(symbol)。在 julia 中,只需在关键字前放置冒号即可写入符号,例如:

typeof(:Symbol)
Symbol

字符串类型和字符类型

字符串(string)是一个非常简单的概念,字符串是一组连续的 Unicode/ASCII 字符,它们构成了一组字符。正如在本系列第三部分中所讲的:“字符串可以通过循环来显示下一个数据类型,即字符(char)。”
字符串用双引号分割。另一方面,字符用单引号分割。

typeof("Hello")
String
typeof('h')
char

浮点数是用来表示 ASCII 中的字符。因此,总是可以将字符转成浮点数:

float('5')