整数和浮点数是运算中最基本的数据类型
以下是 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

可以看出一些规律:

  • 开头的U表示无符号类型
  • 末尾的数字表示类型的位数


以下是一些帮助性的函数

  1. julia> typeof(1) # typeof可以查看一个值的类型
  2. Int64
  3. julia> typeof(Int64) # 我知道你想问啥
  4. DataType
  5. julia> typeof(1.0) # 如果末尾的数字小于64,说明你的机器过时了;如果末尾的数字大于64,说明我的文档过时了
  6. Float64
  7. julia> typemin(Int64) # typemin可以查看一个类型的最小值
  8. -9223372036854775808
  9. julia> typemax(Int64) # typemax可以查看一个类型的最大值
  10. 9223372036854775807
  11. julia> for i in [Int8,Int16,Int32,Int64,Int128,UInt8,UInt16,UInt32,UInt64,UInt128]
  12. println(i,' ',typemin(i),' ',typemax(i))
  13. end # 有些超纲,但可以尝试
  14. Int8 -128 127
  15. Int16 -32768 32767
  16. ...

整数表示

  • 有符号整数以标准形式表示,例如1234,默认类型位数取决于系统是32位还是64位
  • 无符号整数以十六进制、二进制或八进制表示,例如0xFf33670b11100100o777后2个基本没人用),会根据数据大小自动改变类型位数
  • 预定义了IntUInt类型,对应了整数的默认类型
  • 那些超过32位表示范围的整数,如果能用64位表示,那么无论是什么系统都会用64位表示,如果更大,会用128位表示,如果你比较闲,输入了更大的数,会用大整数BigInt)表示
  • 下划线 _ 可用作数字分隔符,例如10_00=1000

浮点数表示

  • 浮点数也使用标准格式表示,例如1.2341.3e8(科学记数法),.234(省略0)
  • 存在十六进制的浮点数字面量,但只适用于Float64,使用p前缀及以2为底的指数来表示,例如0x2.ep7=368.0
  • 下划线 _ 可用作数字分隔符,例如10.0_0=10.0
  • 有常量NaNInf,符合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

比较

操作符 名称
== 相等
!=, ≠ 不等
< 小于
<=, ≤ 小于等于
> 大于
>=, ≥ 大于等于
===,≡ 相同