P2P게임을 개발중입니다. 물론 프레임 동기화를 했구요.
로그를 남겨보니
AMD컴퓨터들 만으로, Intel 컴퓨터만으로 작업은 아무런 문제없이 소수점 모든 자릿수가 맞았습니다.
하지만 다른 CPU 즉, AMD와 Intel을 같이 돌렸을때는 소수점의 오차가 생겨나서 결과가 달라지더군요.
각 회사마다의 FPU때문에 같은 소수도 다르게 표현이 되나요?
참고로 모든 계산은 float를 썼습니다.
만약 이렇게 오차가 있다면 그에대한 해결책은 무엇이 있을까요?
모든 계산을 전부다 정수로 바꿔 나중에 출력할때만 float으로 바꾸는게 있을지도 모르겠지만..
이 작업이 사실 만만치 않습니다.
조언부탁드립니다.~
[GPG 3 글 2.2] 부동 소수점의 오차.... 어떻게 해결해야 할까요?
Moderator: 류광
-
- Posts: 138
- Joined: 2001-08-06 09:00
- Location: NeowizGames
그정도의 정밀도라면...
소숫점 14자리정도되면 float 표현의 한계로 인한 문제가 생길수밖에 없을듯 합니다.비회원 wrote:WinMain에서.. 아래와 같이 명시해 주고 실행해봤지만...
소수자릿수 14정도번째부터 달라지더군요.
어디 좋은 방법 없을까요?
_controlfp( _PC_24, _MCW_PC );
_controlfp( _RC_UP, _MCW_RC );
_controlfp( _IC_AFFINE, _MCW_IC );
이것과 관련해서 스케일이 아주큰 월드에서 이러한 문제를 해결하긴 위한 애기가
GPG4 2.3.장 커다른 세계 좌표의 정밀도 문제 해결 이란 부분이 도움이 좀 될수 있을듯 합니다.
( 내용중에 100km 제곱정도 되는 월드를 32비트 float 로 표현을 한다면 아무리 해봐야
7.8mm 이하로는 표현이 불가능 하다는 애기가 나옵니다. 이건 본질적으로 표현의 한계이니
일단 이부분의 문제부터 해결을 해야하실듯 합니다. )
-
- Posts: 2764
- Joined: 2003-05-13 03:34
- Location: NCSOFT LE팀
정확한 기하학을 위한 벡터 분수의 활용
안녕하세요. 매크로 없는 메비~랍니다.
최악의 경우 쓸 수 있는건 GPG3 권에 있는 <b>정확한 기하학을 위한 벡터 분수의 활용</b> 가 아닐까 싶습니다. PathEngine 을 팔아먹고 있는 토마스 영~ 이란 아저씨가 쓴 자료로 PathEngine 에도 같은 기하학 표현법이 사용되고 있다고 하죠.
최악의 경우 쓸 수 있는건 GPG3 권에 있는 <b>정확한 기하학을 위한 벡터 분수의 활용</b> 가 아닐까 싶습니다. PathEngine 을 팔아먹고 있는 토마스 영~ 이란 아저씨가 쓴 자료로 PathEngine 에도 같은 기하학 표현법이 사용되고 있다고 하죠.
굉장히 정밀도를 요구하는 프로젝트군요..
소수점 14자리라... 저로서는 딱히 감이 와 닿질 않네요..
IEEE표준에서 제정한 부동 소수점 자체가 매우 근사치적인 방식인지라..
님께서 진행하고 계시는 프로젝트쯤 되면 현재로선 답이 안나올거 같네요..
threshold를 적용할수는 없는 부분인가요?
IEEE표준에서 제정한 부동 소수점 자체가 매우 근사치적인 방식인지라..
님께서 진행하고 계시는 프로젝트쯤 되면 현재로선 답이 안나올거 같네요..
threshold를 적용할수는 없는 부분인가요?