上QQ阅读APP看书,第一时间看更新
3.3.1 基本定义
浮点型并不像整型那样区分出有符号或无符号,而是按照表达精度分成了三类,同样与内部的位数相关,具体如表3-2所示。
表3-2 浮点数类型
如果要在Julia中以字面值输入浮点数,可以有多种形式,如下所示:
julia> 1.0 # 正数 1.0 julia> 1. # 省略了小数部分的0,但保留了小数点,用以明确是浮点数 1.0 julia> .5 # 省略整数部分的0,保留小数点 0.5 julia> -1.23 # 负数 -1.23 julia> 1e10 # 科学计数法 1.0e10 julia> 2.5e-4 0.00025
同样,可以使用bitstring()函数查看浮点数内部结构的二进制序列,例如:
julia> bitstring(1.0) "0011111111110000000000000000000000000000000000000000000000000000" julia> bitstring(-1.23) "1011111111110011101011100001010001111010111000010100011110101110" julia> bitstring(2.5e-4) "0011111100110000011000100100110111010010111100011010100111111100"
可见,浮点数的表达与整数有很大的不同。
默认情况下,64位系统会自动选择Float64类型。若要使用其他浮点类型,则需要显式地指明,代码如下:
julia> 0.5f0 # 字面值加上f0标识,会创建Float32类型 0.5f0 julia> typeof(ans) Float32 julia> 2.5f-4 # 计数法使用f代替e 0.00025f0 julia> typeof(ans) Float32 julia> Float32(0.5) # 显式地进行类型限定 0.5f0
半精度类型Float16一般不太常用,只用于特定情况。即使将某个数值限定为Float16类型,参与计算时也会由Julia处理为Float32类型。