개발 Q&A

제목 숫자 연산 관련
글쓴이 freeseamew 작성시각 2014/11/09 03:21:00
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 15993   RSS
어떤 값의 연산된 범위가 커지면

3.56021268054e19 이런 식으로 영문이 포함된 값으로 떨어집니다. 

문제는 이렇게 되면 round함수 같은 소수점을 자르는 함수가 먹지를 않더군요 ㅡㅜ

해결방법 아시는 분들의 도움 부탁드립니다. 
 다음글 xampp 관련 초보가 질문드립니다 ㅎㅎ (2)
 이전글 [mysql] MASTER-SLAVE 작업질문입니다. (1)

댓글

freeseamew / 2014/11/10 02:15:03 / 추천 0
자답이네요 

일단 해결은 아래와 같이 sprintf 를 사용해서 했습니다. 

$a = 12345678;
$b = 56456465456;
$c = $a * $b;

return sprintf("%.1f", intval(strval($c)));

이런 소수점 계산의 경우 조금 복잡하긴 하네요 ㅡㅡ;;

서버를 세팅할 수 있다면 GMP같은 것을 사용하라고도 하고, 하지만 저와 같이 호스팅을 이용할 경우는 위의 방법이 괜찮은 것 같습니다. 

검색하다 찾은 몇가지 사이트도 공유 합니다. 

http://anyx.tistory.com/91

http://kais.tistory.com/entry/PHP-실수형-연산시-정확성-손실-문제Small-loss-of-precision




 
한대승(불의회상) / 2014/11/10 09:10:33 / 추천 0
실수연산 사용시 참고 하도록 하겠습니다.
좋은 정보 감사 합니다.