$money=271.28; echo $money=floor($money*pow(10,2))/100출력이 271.28이 아니라 271.27이 나와서 깜짝 놀랐습니다!
많은 정보를 확인한 후 PHP 공식 홈페이지에서 이런 내용을 봤습니다.
나중에 위 작업의 결과를 인쇄했습니다.
printf("%.12f", $money*pow(10,2));결과는 다음과 같습니다. 27127.999999999996
결과는 다음과 같습니다. 정확성 문제. 아직 통일된 솔루션은 발견되지 않았습니다. 두 자리까지 정확한 데이터를 재처리하는 것을 방지하기 위해 코드 로직에
if ($money - round ( $money, 2 ) < 0.00001) { }else{ $money=floor($money*pow(10,2))/100; }만 추가할 수 있습니다.
위 함수를 구현하는 다른 방법(소수점 두 자리까지 정확하고 세 번째 자리는 모두 삭제)을 아는 사람이 있으면 알려주세요.
위 내용은 PHP의 바닥 기능 문제를 소개합니다. , 관련 내용을 포함하여 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.