WithCoderWithCoderWithCoder

PHP数据类型——Float浮点型

    在PHP中,浮点数据类型就是我们常见的小数。浮点数是带小数部分的数字,或是指数形式。浮点数据类型既可以用来存储整数,也可以存储小数。通常来说,浮点型的有效范围是1.8E-308~1.8E+308。

    正如上面所说,浮点型数据有两种书写格式,一是标准格式,如下:

    $f = 1.23;

    另一种是科学记数法格式,如下:   

    $f = 1.2e3;

    比较浮点数

    由于内部表达方式的原因,比较两个浮点数是否相等是有问题的。浮点型的数据只是一个近似的值,所以要尽量避免浮点型数值之间的比较大小,因为最后的结果都是不准确的。不过可以使用迂回的方法来比较浮点数值,要测试浮点数是否相等,要使用一个仅比该数值大一丁点的最小误差值。该值也被称为机器极小值(epsilon)或最小单元取整数,是计算中所能接受的最小的差别值。   

<?php
$a = 1.23456789;
$b = 1.23456780;
$epsilon = 0.00001;

if (abs($a - $b) < $epsilon) {
   echo "相等";
}

    转换为浮点数

    要明确地将一个值转换为 float,用 (float)强制转换。不过大多数情况下都不需要强制转换,因为当运算符,函数或流程控制需要一个 float 参数时,值会自动转换。还可以通过函数 floatval() 来将一个值转换成浮点数。    

    1. 从布尔值转换

        FALSE 将被转换为 0,TRUE 将被转换为 1。

    2. 从字符串转换

        2.1 字符串的开始部分决定了它转换的值。如果该字符串以合法的数值开始,则使用该数值。否则其值为 0(零)。

        2.2 如果字符串包含 '.','e' 或 'E' 并且其数字值在整型的范围之内(由 PHP_INT_MAX 所定义),该字符串将被当成 float 来取值。否则,会被作为 integer 来取值。

        举例如下:   

<?php
$s = '1.2abc' + 1;
var_dump($s);  // 返回 float 2.2

$s = '1.2e3bc' + 1;
var_dump($s);  // 返回 float 1201

$s = '12abc' + 1;
var_dump($s);  // 返回 int 13

欢迎分享交流,转载请注明出处:WithCoder » PHP数据类型——Float浮点型