본문 바로가기
개발/php

php 부동소수점 소수 비교 연산 방법

by 향유 2021. 1. 19.

문제: 0.111 값과 0.111값을 비교 인간의 사고방식으로는 0이 출력되어야 하는데 -값이 출력되는 현상이 발생한다.

 

ex)

 

$abc - $abc2

$abc 와 $abc2 값 출력해봐도 0.111로 같은 값이 출력된다.

floor($abc*10000000)

floor($abc2*10000000)

 

로 데이터를 찍어 봐았다.

1109999

1110000

 

와 같이 출력되는 것을 확인했다.

내부적으로 데이터값이 뭔가 이상한것을 알게 되었다.

 

 

해결방법 : strval() 함수로 실수를 문자형으로 바꿔서 비교하면 됨

 

strval()함수를 사용해서 고정값을 문자열로 변경해서

아래와 같이 실행했더니 값이 자동으로 float 로 변환하며 연산하여 0값이 정상적으로 출력된다.

strval($abc)-strval($abc1)

 

댓글