整数和浮点数是运算中最基本的数据类型
以下是 Julia 预定义的数值类型
整数类型
类型 |
带符号 |
比特数 |
Int8 |
Y |
8 |
UInt8 |
N |
8 |
Int16 |
Y |
16 |
UInt16 |
N |
16 |
Int32 |
Y |
32 |
UInt32 |
N |
32 |
Int64 |
Y |
64 |
UInt64 |
N |
64 |
Int128 |
Y |
128 |
UInt128 |
N |
128 |
浮点类型
类型 |
精度 |
比特数 |
Float16 |
half |
16 |
Float32 |
single |
32 |
Float64 |
double |
64 |
可以看出一些规律:
以下是一些帮助性的函数
julia> typeof(1) # typeof可以查看一个值的类型
Int64
julia> typeof(Int64) # 我知道你想问啥
DataType
julia> typeof(1.0) # 如果末尾的数字小于64,说明你的机器过时了;如果末尾的数字大于64,说明我的文档过时了
Float64
julia> typemin(Int64) # typemin可以查看一个类型的最小值
-9223372036854775808
julia> typemax(Int64) # typemax可以查看一个类型的最大值
9223372036854775807
julia> for i in [Int8,Int16,Int32,Int64,Int128,UInt8,UInt16,UInt32,UInt64,UInt128]
println(i,' ',typemin(i),' ',typemax(i))
end # 有些超纲,但可以尝试
Int8 -128 127
Int16 -32768 32767
...
整数表示
- 有符号整数以标准形式表示,例如
1234
,默认类型位数取决于系统是32位还是64位 - 无符号整数以十六进制、二进制或八进制表示,例如
0xFf3367
,0b1110010
,0o777
(后2个基本没人用),会根据数据大小自动改变类型位数 - 预定义了
Int
与UInt
类型,对应了整数的默认类型 - 那些超过32位表示范围的整数,如果能用64位表示,那么无论是什么系统都会用64位表示,如果更大,会用128位表示,如果你比较闲,输入了更大的数,会用
大整数
(BigInt
)表示 - 下划线 _ 可用作数字分隔符,例如
10_00
=1000
浮点数表示
- 浮点数也使用标准格式表示,例如
1.234
,1.3e8
(科学记数法),.234
(省略0) - 存在十六进制的浮点数字面量,但只适用于
Float64
,使用p前缀及以2为底的指数来表示,例如0x2.ep7
=368.0 - 下划线 _ 可用作数字分隔符,例如
10.0_0
=10.0 - 有常量
NaN
和Inf
,符合IEEE 754标准
高精度类型
- 大整数
BigInt
- 大实数
BigFloat
- 可以使用
big(值)
定义,其中BigFloat
可以使用precision
参数指定小数点后精度
算术
表达式 |
名称 |
描述 |
+x |
一元加法运算符 |
写了等于没写 |
-x |
一元减法运算符 |
将值变为其相反数 |
x + y |
二元加法运算符 |
|
x - y |
二元减法运算符 |
|
x * y |
乘法运算符 |
|
x / y |
除法运算符 |
除法,得到浮点数 |
x ÷ y |
整除 |
取 x / y 的整数部分 |
x \ y |
反向除法 |
等价于 y / x |
x ^ y |
幂操作符 |
x 的 y 次幂 |
x % y |
取余 |
等价于 rem(x,y) ,会保留x的正负号 |
mod(x,y) |
取模 |
得到非负数 |
~x |
按位取反 |
|
x & y |
按位与 |
|
x | y |
按位或 |
|
x ⊻ y |
按位异或 |
也可以使用xor(x,y) |
x >>> y |
逻辑右移 |
|
x >> y |
算术右移 |
|
x << y |
逻辑/算术左移 |
julia> a=1;b=2
2
julia> a+b
3
julia> a+=b # 等同于a=a+b
3
julia> a
3
比较
操作符 |
名称 |
== |
相等 |
!=, ≠ |
不等 |
< |
小于 |
<=, ≤ |
小于等于 |
> |
大于 |
>=, ≥ |
大于等于 |
===,≡ |
相同 |