ZetCode

PHP float 关键字

最后修改于 2025 年 4 月 16 日

PHP 的 float 关键字表示浮点数(小数)。浮点数允许存储带有小数部分的数字。它们对于科学计算和精确测量至关重要。

基本定义

float 是带有小数点或指数形式的数字。PHP 浮点数遵循 IEEE 754 浮点运算标准。

浮点数具有有限的精度(约 14 位小数)。它们可以使用科学计数法表示非常大或非常小的数字。

在 PHP 中,float 类型也称为 double。与某些其他语言不同,PHP 中的 float 和 double 没有区别。

基本浮点数声明

此示例展示了如何在 PHP 中声明和使用基本的浮点数变量。

basic_float.php
<?php

declare(strict_types=1);

$price = 19.99;
$temperature = -3.5;
$scientific = 1.2e3; // 1200

echo "Price: $price\n";
echo "Temperature: $temperature\n";
echo "Scientific: $scientific\n";

代码声明了三个具有不同表示法的浮点数变量。第一个使用标准十进制表示法。第二个展示了负浮点数。第三个演示了科学计数法(1.2 × 10³)。

浮点数类型转换

此示例演示了如何使用类型转换将其他类型转换为浮点数。

float_casting.php
<?php

declare(strict_types=1);

$intVal = 42;
$strVal = "3.14";
$boolVal = true;

$float1 = (float) $intVal;
$float2 = floatval($strVal);
$float3 = (float) $boolVal;

echo "Int to float: $float1\n";
echo "String to float: $float2\n";
echo "Bool to float: $float3\n";

代码展示了两种转换为 float 的方法:使用 (float)floatval。整数直接转换。字符串必须包含有效的浮点数语法。布尔值 true 变为 1.0,false 变为 0.0。

浮点数算术运算

此示例演示了浮点数的算术运算。

float_arithmetic.php
<?php

declare(strict_types=1);

$a = 5.5;
$b = 2.2;

$sum = $a + $b;
$diff = $a - $b;
$product = $a * $b;
$quotient = $a / $b;
$modulus = fmod($a, $b);

echo "Sum: $sum\n";
echo "Difference: $diff\n";
echo "Product: $product\n";
echo "Quotient: $quotient\n";
echo "Modulus: $modulus\n";

代码对浮点数执行标准算术运算。请注意,对于模运算,我们使用 fmod 而不是 %。浮点数除法即使是整数也会始终产生浮点数结果。

浮点数精度问题

此示例演示了浮点数常见的精度问题。

float_precision.php
<?php

declare(strict_types=1);

$a = 0.1;
$b = 0.2;
$sum = $a + $b;

echo "Expected: 0.3\n";
echo "Actual: $sum\n";

if (abs($sum - 0.3) < PHP_FLOAT_EPSILON) {
    echo "The values are considered equal.\n";
}

代码显示 0.1 + 0.2 由于二进制表示不完全等于 0.3。为了安全地比较浮点数,我们检查其差值是否小于 PHP_FLOAT_EPSILON,这是可表示的最小差值。

浮点数函数

此示例演示了常用的 PHP 浮点数处理函数。

float_functions.php
<?php

declare(strict_types=1);

$num = 3.14159;

echo "Floor: " . floor($num) . "\n";
echo "Ceil: " . ceil($num) . "\n";
echo "Round: " . round($num, 2) . "\n";
echo "Is finite: " . (is_finite($num) ? 'Yes' : 'No') . "\n";
echo "Is NAN: " . (is_nan($num) ? 'Yes' : 'No') . "\n";

代码演示了几个与浮点数相关的函数。floor 向下取整,ceil 向上取整,round 四舍五入到指定精度。is_finiteis_nan 检查特殊的浮点数值。

函数参数中的浮点数

此示例展示了如何在函数参数中使用浮点数类型提示。

float_function.php
<?php

declare(strict_types=1);

function calculateArea(float $radius): float {
    return M_PI * $radius * $radius;
}

$radius = 5.5;
$area = calculateArea($radius);

echo "Area of circle with radius $radius: $area\n";

代码定义了一个接受并返回浮点数的函数。当设置 strict_types=1 时,PHP 会强制执行浮点数类型。该函数使用 M_PI 常量计算圆的面积。

使用浮点数进行科学计算

此示例演示了如何使用浮点数进行科学计算。

scientific_calc.php
<?php

declare(strict_types=1);

function calculateKineticEnergy(float $mass, float $velocity): float {
    return 0.5 * $mass * $velocity ** 2;
}

$mass = 2.5; // kg
$velocity = 10.2; // m/s

$energy = calculateKineticEnergy($mass, $velocity);

echo "Kinetic energy: $energy Joules\n";

代码使用浮点数值计算动能(½mv²)。科学计算通常需要浮点数精度。** 运算符用于指数运算。结果保持小数精度。

最佳实践

来源

PHP float 文档

本教程介绍了 PHP 浮点数,并通过实际示例展示了浮点数的声明、运算、精度和科学应用。

作者

我叫 Jan Bodnar,是一名热情的程序员,拥有丰富的编程经验。我自 2007 年以来一直撰写编程文章。至今,我已撰写了 1,400 多篇文章和 8 本电子书。我在编程教学方面拥有十多年的经验。

列出 所有 PHP 教程