Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/226.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
双精度的PHP模运算符_Php_Double_Modulo - Fatal编程技术网

双精度的PHP模运算符

双精度的PHP模运算符,php,double,modulo,Php,Double,Modulo,我读到: 具有非整数的模将给出不可预测的结果 然而,我尝试过,它似乎给出了相当可预测的结果: function mod($a, $b) { echo "$a % $b = " . ($a % $b) . '<br>'; } mod(10.3, 4); mod(10.3, 2); mod(-5.1, 3); // OUTPUT: // 10.3 % 4 = 2 // 10.3 % 2 = 0 // -5.1 % 3 = -2 功能模块($a,$b){ 回声“$a

我读到:

具有非整数的模将给出不可预测的结果

然而,我尝试过,它似乎给出了相当可预测的结果:

function mod($a, $b) {
    echo "$a % $b = " . ($a % $b) . '<br>';
}
mod(10.3, 4);
mod(10.3, 2);
mod(-5.1, 3);

// OUTPUT:
//   10.3 % 4 = 2
//   10.3 % 2 = 0
//   -5.1 % 3 = -2
功能模块($a,$b){
回声“$a%$b=”($a%$b)。”
; } 国防部(10.3,4); 国防部(10.3,2); 国防部(-5.1,3); //输出: // 10.3 % 4 = 2 // 10.3 % 2 = 0 // -5.1 % 3 = -2
换句话说,
double
似乎首先转换为
integer

当第一个操作数为双精度时,
%
如何工作,是否有任何定义?

使用:

fmod(10.3, 4)
我也不得不做同样的事情,但我注意到double被转换成int,使用fmod返回一个double

如果这有帮助的话


模运算符%的结果与股息具有相同的符号-即,$a%$b的结果将与$a具有相同的符号。

谢谢您的回答。请注意,我对
double
余数(即
fmod
返回的内容)不感兴趣,而是了解当第一个操作数为
double
@MishaMoroshko时
%
如何工作。如果答案对您的查找有所帮助,我编辑了我的答案。感谢您的尝试,但不幸的是,你的答案并没有真正解决这个问题。也许应该改为“可能会产生意想不到的结果”。你能提供一个这样意想不到的结果的例子吗?