fmod() 的两个参数顺序写反会返回不同的数值结果,因为该函数执行的是非对称的取模运算。具体而言,调用 fmod(x, y) 时,返回值等于 x - n * y(其中 n 是 x/y 的整数部分),而写反后调用 fmod(y, x) 则基于 y 和 x 计算。如果输入值不同,这两个结果通常不相等;若其中一个为 0,还会触发警告并返回 nan。

fmod(5.5, 2.0) 与 fmod(2.0, 5.5) 的具体差异是什么
当分别传入 5.5 和 2.0 时,正序调用返回 1.5,而反序调用返回 2.0。这是因为 fmod(5.5, 2.0) 计算的是 5.5 除以 2.0 后的余数,即 5.5 - 2 * 2.0 = 1.5;而 fmod(2.0, 5.5) 计算的是 2.0 除以 5.5 后的余数,由于 2.0 小于 5.5,商为 0,余数即为被除数本身 2.0。

<?php $x = 5.5; $y = 2.0; echo "fmod($x, $y): " . fmod($x, $y) . PHP_EOL; echo "fmod($y, $x): " . fmod($y, $x) . PHP_EOL; ?>
预期输出:
fmod(5.5, 2.0): 1.5
fmod(2.0, 5.5): 2
fmod(-5.5, 2.0) 与 fmod(2.0, -5.5) 的结果如何受符号影响
当涉及负数时,fmod() 的返回值符号与被除数(第一个参数)保持一致。对于 fmod(-5.5, 2.0),结果为 -1.5;而对于反序的 fmod(2.0, -5.5),结果为 2.0。这表明不仅数值大小可能变化,结果的符号也完全取决于参数的位置和被除数的正负性。

<?php $a = -5.5; $b = 2.0; echo "fmod($a, $b): " . fmod($a, $b) . PHP_EOL; echo "fmod($b, $a): " . fmod($b, $a) . PHP_EOL; ?>
预期输出:
fmod(-5.5, 2.0): -1.5
fmod(2.0, -5.5): 2
fmod() 在除数为 0 时会返回什么
如果将第二个参数写反导致其变为 0,例如调用 fmod(5.0, 0.0),PHP 会抛出一个 Warning 级别的错误提示 "Division by zero",并且函数返回 NaN(Not a Number)。这与数学上的未定义行为一致,但在编程中表现为特定的浮点数常量。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











