Bcmath는 때로는 부유물을 반환하고 때로는 결과 라운드를 반환합니다
문제
$newTime
가 만든 시간 초만의 시간이 지나면 mktime()
가 있습니다.
이 경우 86.400
(하루에 몇 초) 이상이고, 86.400
로 나누려 노력하여 일수 (둥근)를 얻으려고합니다.
그러나 때때로 나는 얻는다 :
Case 1: 87951 / 86400 = 1.0179513888 (1 day ago)
Case 2: 156257 / 86400 = 1.8085300925 (2 days ago)
.
때로는 다음과 같습니다 :
Case 1: 87986 / 86400 = 1 (Should be 1 day ago)
Case 2: 156292 / 86400 = 1 (Should be 2 days ago)
.
이것은 코드입니다 :
$newTime = round(bcdiv($newTime, bcmul("24", bcmul("60", "60"))),0);
.
BCMATH를 사용하지 않을 때는 일반 수학 ($newTime / (60*60*24)
)만이 매번 떠있는 결과를 얻습니다.
해결책
bcscale
를 사용하여 스케일을 설정 했습니까?0
로 설정된 경우 동작을 설명 할 수 있습니다.계산 전에 bcscale(100)
를 호출하십시오.
다른 팁
사용할 수 있습니다 :
$newTime = round( $newTime / (60 * 60 * 24));
.
bcmath가 전혀 없어주십시오.
예 :
$newTime = 156292;
$newTime = round( $newTime / (60 * 60 * 24));
echo $newTime; //2 Always
$newTime = 87986;
$newTime = round( $newTime / (60 * 60 * 24));
echo $newTime; //1 Always
. 제휴하지 않습니다 StackOverflow