取舍五入误差小于/大于使用“0.5”时


Getting Round Up Error in Less Than/Greater Than When Using "0.5"

我对此感到非常愉快

。我试图让它将出生日期转换为年龄,然后基于年龄,最终我将指定某些问题,这些问题以基于年龄的形式显示。这是我现在开始工作的第一部分,我似乎无法弄清楚为什么它总是显示 0-6 个月,即使它应该是 7-12 个月。

编辑是因为我搞砸了我粘贴的代码@_@。

我用于生日的代码一直将其设为 0 或其他东西。我不确定。

可能是四舍五入或无法使用"0.5"的东西吗?

<?php
  $birthDate = "2/17/2015";
  $birthDate = explode("/", $birthDate);
  $age = (date("md", date("U", mktime(0, 0, 0, $birthDate[0], $birthDate[1], $birthDate[2]))) > date("md")
? ((date("Y") - $birthDate[2]) - 1)
: (date("Y") - $birthDate[2]));
if($age <= 0.5){               
    echo "0-6 Months";
}
elseif($age > 0.5 && $age < 1) {                
    echo "7-12 Months Old"; 
}
elseif($age >= 1 && $age < 3) {                 
    echo "1-2 Years Old";   
}    
elseif($age >= 2 && $age < 5) {                 
    echo "2-4 Years";                    
} 
elseif($age >= 1 && $age < 3) {                 
    echo "5-8 Years Old";   
}
elseif($age >= 2 && $age < 5) {                 
    echo "9-11 Years";                   
} 
elseif($age >= 1 && $age < 3) {                 
    echo "12-17 Years Old"; 
}
elseif ($age >= 18 && $age < 65) {              
    echo "Adult";                
} 
elseif ($age >= 65){               
    echo "Senior";               
} 
else {               
    echo "Whoops!";
}
echo "</br></br>";

你在这方面太努力了。您需要DateTime类。然后你可以做这样的事情:

$birthDate = new DateTime("2/17/2015");
$now = new DateTime();
$interval = $birthDate->diff($now);
echo $interval->format('%y years and %a days'); // 0 years and 331 days
$years = $interval->format('%y');
$days = $interval->format('%a');
if ($years == 0) {
    echo ($days < 183) ? '0-6 months' : '7-12 months';
}
else {
    switch ($years) {
        case < 3:
            echo '1-2 years old';
        case < 5:
            echo '2-4 years old';
        // etc
    }
}