Bcmath는 때로는 부유물을 반환하고 때로는 결과 라운드를 반환합니다

StackOverflow https://stackoverflow.com//questions/11701576

  •  13-12-2019
  •  | 
  •  

문제

$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
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top