首页 > 编程笔记
PHP浮点数以及常见操作
浮点数(float)可以处理带有小数部分的数值。PHP 中的浮点数采用 IEEE 754 标准的双精度格式,使用 64 位存储。
浮点数同样可以进行基本的加、减、乘、除等算术运算,下面的代码演示了相关运算。
此外,由于计算机直接处理浮点数的限制,需要高精度的浮点数计算时,应使用 PHP 提供的数学计算函数,下面是 BC 数学库中的一些运算函数:
这些函数中,bcsqrt() 函数用于求平方根,它只需要一个必要的参数,其他的函数都需要两个必要的参数,其中,参数一是左操作数,参数二是右操作数。需要注意的是,这些必要参数都是字符串(string)类型,但实际应用中,直接输入数值也可以自动完成类型转换工作。
此外,bcadd()、bcsub()、bcmul()、bcdiv()、bcpow()、bcpowmod() 和 bcsqrt() 函数的最后一个参数是可选参数,用于指定计算结果中的小数位,默认是 0(只取整数部分)。
下面的代码演示了 bcadd()、bcmod() 和 bcsqrt() 函数的使用。
下面的代码演示了 bccomp() 函数的使用。
一些 BC 数学函数可以设置一个小数位数的参数,如果在一段代码中需要大量使用这些函数,可能会有些麻烦。此时,可以使用 bcscale() 函数,它的功能是设置所有BC数学函数默认的小数位数。
bcscale() 函数只有一个整数参数,用于设置小数位数,如果设置成功,函数会返回 true,否则返回 false。下面的代码演示了 bcscale() 函数和运算函数的配合使用。
浮点数同样可以进行基本的加、减、乘、除等算术运算,下面的代码演示了相关运算。
<?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>"; ?>代码执行结果为:
5.1 + 2.0 = 7.1
5.1 - 2.0 = 3.1
5.1 * 2.0 = 10.2
5.1 % 2.0 = 2.55
5.1 ** 2.0 = 26.01
此外,由于计算机直接处理浮点数的限制,需要高精度的浮点数计算时,应使用 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); ?>代码执行结果为:
1.38
0.03
3.00
下面的代码演示了 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 位小数。