PHP-round()函数,使用PHP\u round\u HALF\u DOWN模式(意外行为)

PHP-round()函数,使用PHP\u round\u HALF\u DOWN模式(意外行为),php,rounding,floor,ceil,Php,Rounding,Floor,Ceil,目前我正在使用PHP5.3.29和PHP\u round\u HALF\u DOWN模式中的round()函数对特定数字进行四舍五入 这是我的密码: function getBetragrabatt($betrag, $rabatt, $ratezahl = false){ if(!empty($rabatt)){ $rabatt = str_replace(array(",", "."), array("", ""), $rabatt); if($rat

目前我正在使用PHP5.3.29和PHP\u round\u HALF\u DOWN模式中的round()函数对特定数字进行四舍五入

这是我的密码:

function getBetragrabatt($betrag, $rabatt, $ratezahl = false){
    if(!empty($rabatt)){
        $rabatt = str_replace(array(",", "."), array("", ""), $rabatt);
        if($ratezahl >=1)
            $abschlag = ($rabatt / $ratezahl);
        else
            $abschlag = $rabatt;
        $abschlag = floor($abschlag / 100) . '.' . ($abschlag % 100);
        $rabattbetrag = ($betrag - round($abschlag, 0, PHP_ROUND_HALF_DOWN));
    }
    return $rabattbetrag;
}

$rateRabatt = getBetragrabatt(119.95, 100, 18);

echo $rateRabatt;
如果我在sandbox()上使用代码,一切都会按预期工作,结果是119.95

如果我在IDE中使用相同的代码或将其上载到服务器,结果会得到119.40

我做错了什么?
希望您能帮助我。

这并不能真正解决您的问题,但您确实希望切换到新版本的PHP,我敢说,这将得到解决(就像在沙箱中)。@H2ONOCK我也想这样做,但我目前依赖于此版本:(假设PHP版本实际上是您的问题,您需要编写自己的函数来处理舍入,而不是使用PHP的本机函数。PHP网站上的一些评论可能会有所帮助…@H2ONOCK我使用的是5.3.29版本,根据纪录片,自版本开始,具有PHP_round_HALF_DOWN模式的舍入函数就可用了。)5.3.无论如何,谢谢:)嗨,我知道这一点,但我想知道那个版本中是否有bug,我不记得很久以前了。我很想知道你是如何解决这个问题的。