Julia机器学习核心编程:人人可用的高性能科学计算
上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 浮点数类型表