双精度的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时%
如何工作。如果答案对您的查找有所帮助,我编辑了我的答案。感谢您的尝试,但不幸的是,你的答案并没有真正解决这个问题。也许应该改为“可能会产生意想不到的结果”。你能提供一个这样意想不到的结果的例子吗?