检查数字是否是另一个的倍数的函数(包括小数)

时间:2017-06-09 22:06:29

标签: php cakephp

您好我正在尝试构建一个函数来检查数字是否是另一个的倍数:

我想要得到的东西:

my_function (10,2) = true
my_function (8,3) = false
my_function (9.5,0.5) = true
my_function (6,1.5) = true
my_function (1.1,0.1) = true

我的功能是:

//Check if $number1 is a multiple of $number2
function my_function( $number1, $number2 ){
    $_number = $number1 / $number2;  

    if( $_number == floor( $_number ) ) :
        return true;
    else :
        return false;
    endif;
}

它的工作方式就像一个魅力,除了由于某些原因,当有值3,7,11等时它会返回false,当它应该清楚地返回true时:

my_function (5.4,0.3) = false (it is retruning false, it should be true!)
my_function (7.7,0.7) = false (it is retruning false, it should be true!)

知道为什么吗?这是编译器错误吗?我没有想法。谢谢

1 个答案:

答案 0 :(得分:0)

由于floor的结果类型是双倍且$_number也是双倍,因此最安全的方式是进行相对比较<而不是绝对比较。

浮动精度可能会有所不同。因此,这是最安全的方式:

if (abs(floor( $_number ) - $_number) < 0.00001) {
    return true;
}

return false;