上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
2.3 Julia中的浮点数
与其他编程语言类似,在Julia中能够很容易地表示浮点数。
【范例2-14】浮点数测试
01 julia> 100.0 #浮点数 02 100.0 03 julia> 24. #加一个小数点 04 24.0 05 julia> .10 #不需要在小数点之前添加数字 06 0.1 07 julia> typeof(ans) 08 Float64
通过以上测试,我们可以知道Julia中浮点数的基本使用方法。
在Julia中有正零和负零的概念。它们的值是相同的,但其二进制表示不同。如下代码对正零和负零进行了比较。
01 julia> 0.0 == -0.0 #两种零的比较 02 true 03 julia> bits(0.0) 04 "000000000000000000000000000000000000000000000000000000000 05 0000000" 06 #正零和负零的首位不同 07 julia> bits(-0.0) 08 "100000000000000000000000000000000000000000000000000000000 09 0000000"
代码01行比较了0.0和−0.0的值,返回值为true,说明它们的值相等。代码04行与09行分别给出了它们的二进制表示。在Julia中,指数表示法非常有用,并且使用方便,如下代码给出了其使用方法。
01 julia> 2.99e8 02 2.99e8 03 julia> 2.99e8>999999 04 true
代码01行输入了一个以指数形式表示的浮点数2.99e8,它的值为2.99×108。代码03行将2.99e8与999999进行比较,返回的结果为true。
在前面的范例中使用的一直是Float64。其实如果需要,也可以在64位计算机上使用Float32。
【范例2-15】使用Float32
01 julia> 2.99f8 #使用f替换e生成Float32 02 2.99f8 03 julia> typeof(ans) #检查前面的变量类型是否为Float32 04 Float32 05 julia> 2.99f8==2.99e8 #将它与相同的值进行比较 06 true
代码01行使用f代替e来表示这是一个Float32类型的值。代码03行使用typeof(ans)来判断上一个结果的类型,结果为Float32。代码05行将Float32与Float64的相同值进行比较,结果为true。
除此之外,我们还可以通过一个函数将值从Float64转换为Float32。示例代码如下:
01 julia> Float32(2.99e8) 02 2.99f8
代码01行使用了Float32()函数,传入一个Float64类型的值,得到的结果是一个Float32类型的值。
在Julia中,十进制形式的浮点数是Float64类型的。示例代码如下:
01 julia> 0x4.1p1 02 8.125 03 julia> typeof(ans) 04 Float64
代码01行使用了p计数法,输入一个十六进制形式的浮点数。该浮点数的类型为Float64。
如表2-2所示为浮点数类型的精度与位数。
表2-2 浮点数类型表