购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.3 浮点数

浮点数(float)可以处理带有小数部分的数值。PHP中的浮点数采用IEEE 754标准的双精度格式,使用64位存储。

浮点数同样可以进行基本的加、减、乘、除等算术运算,下面的代码演示了相关运算。

    <?php
    $x = 5.1;
    $y = 2.0;
    echo "$x + $y = ",$x+$y,"<br>";
    echo "$x - $y = ",$x-$y,"<br>";
    echo "$x * $y = ",$x*$y,"<br>";
    echo "$x / $y = ",$x/$y,"<br>";
    echo "$x % $y = ",$x%$y,"<br>";
    echo "$x ** $y = ",$x**$y,"<br>";
    ?>

代码执行结果见图3-7。

图 3-7

这里需要注意的是求模(求余数)运算。由于%运算符只能用于整数的运算,对于非整数运算数,会转换为整数后再进行计算,所以,5.1%2的运算结果也就是5%2的结果1。

此外,由于计算机直接处理浮点数的限制,需要高精度的浮点数计算时,应使用PHP提供的数学计算函数,下面是BC数学库中的一些运算函数:

● bcadd()函数,加法运算。

● bcsub()函数,减法运算。

● bcmul()函数,乘法运算。

● bcdiv()函数,除法运算。

● bcmod()函数,取模。

● bcpow()函数,求乘方。

● bcpowmod()函数,乘方求模。

● bcsqrt()函数,求平方根。

这些函数中,bcsqrt()函数用于求平方根,它只需要一个必要的参数,其他的函数都需要两个必要的参数,其中,参数一是左操作数,参数二是右操作数。需要注意的是,这些必要参数都是字符串(string)类型,但实际应用中,直接输入数值也可以自动完成类型转换工作。

此外,bcadd()、bcsub()、bcmul()、bcdiv()、bcpow()、bcpowmod()和bcsqrt()函数的最后一个参数是可选参数,用于指定计算结果中的小数位,默认是0(只取整数部分)。

下面的代码演示了bcadd()、bcmod()和bcsqrt()函数的使用。

    <?php
    echo bcadd("1.23","0.15",2),"<br />";
    echo bcmod("1.23","0.15",2),"<br />";
    echo bcsqrt("9",2);
    ?>

代码执行结果见图3-8。

图 3-8

BC数学库中,还可以使用bccomp()函数进行指定小数位的数值比较,相等时返回0,参数一大于参数二时返回1,参数一小于参数二时返回-1。下面的代码演示了bccomp()函数的使用。

    <?php
    $x = "3.001";
    $y = "3.0";
    echo bccomp($x,$y,3),"<br />";
    echo bccomp($x,$y,1),"<br />";
    echo bccomp($y,$x,3);
    ?>

本例,第一个bccomp()函数比较三位小数,3.001的值大于3.0的值,结果返回1;第二个bccomp()函数比较1位小数,3.0等于3.0,结果返回0;第三个bccomp()函数同样比较三位小数,这次将$y放在前面,3.0小于3.001,结果返回-1。

一些BC数学函数可以设置一个小数位数的参数,如果在一段代码中需要大量使用这些函数,可能会有些麻烦。此时,可以使用bcscale()函数,它的功能是设置所有BC数学函数默认的小数位数。

bcscale()函数只有一个整数参数,用于设置小数位数,如果设置成功,函数会返回true,否则返回false。下面的代码演示了bcscale()函数和运算函数的配合使用。

    <?php
    bcscale(3);
    echo bcadd("1.12345","3.0056"),"<br />";
    echo bcadd("1.12345","3.0056",5);
    ?>

代码运行结果会显示4.129和4.12905。首先使用bcscale()函数设置精度为3位小数;第一个bcadd()函数中使用了两个参数,它的运算精度就是3位小数;第二个bcadd()函数中将第三个参数设置为5,其运算结果就是5位小数。 /jxHhq0VUBaBDMBbpdtvJiUMbRSHvNSnFWnW9el09ZFPbQxlTIuVYYyAFOY6/Dfc

点击中间区域
呼出菜单
上一章
目录
下一章
×