부동 소수점 정밀도 (fp : 정밀 대 fp : fast)


10

C 또는 C ++에서 부동 소수점 정밀도의 컴파일러 옵션은 실제 (소규모 / 인디) 게임에서 실제로 차이를 만들어 줍니까?

내 관찰에서 fp : fast 설정은 fp : precise보다 몇 배 빠르며 여기에서 내가 이해하는 것 ( /programming/6889522/fpfast-vs-fpprecise-what-kind-of-errors-can -i-encounter ) 두 컴파일러 옵션의 정밀도 차이는 부동 소수점 숫자의 16 번째 자리에서만 변경됩니다.

fp : fast를 사용할 때 2D 또는 3D 게임에서 끔찍한 잘못을 경험 한 사람이 있습니까?

편집 : 명확히하기 위해 부동 소수점 값의 정밀도에 대해 묻지 않습니다 (예 : float vs double vs decimal). 컴파일러 옵션과 관련된 정밀도에 대해서만.

답변:


11

fp : fast와 fp : precise의 정확한 해석은 의심 스럽습니다. 소수점 16 자리 이후의 반올림 오류보다 더 많은 효과가 있다고 확신합니다. 자세한 내용은 Bruce Dawson의 부동 소수점 정밀도 기사 를 참조하십시오.

일반적으로, 부동 소수점 정밀도 오차는 확실히 게임 개발의 진짜 문제는. 그것은 물리 프로그래머와 세계가 길거나 실행 시간이 긴 게임 (MMO와 같이 몇 주 또는 몇 달 정도)에 특히 번거 롭습니다. 부동 소수점 정밀도 오류는 시뮬레이션 불안정성과 불안한 움직임으로 가장 자주 나타납니다. 게임에서 이러한 종류의 인공물이 보이지 않고 성능이 크게 향상되면 fp : fast를 사용하는 것이 안전합니다.


1
-1 부동 소수점 정밀도는 게임 개발에서 큰 문제가 아닙니다. 잘못된 데이터 유형을 선택하고 수치 지식과 알고리즘이 부족하면이 게시물에서 언급 한 모든 문제의 원인이됩니다. 내가 참여한 모든 프로젝트는 언급 된 문제없이 fp : fast를 사용했습니다.
Maik Semder

예, 우리의 결론은 동일합니다. 필자의 요점은 부동 소수점 정밀도 가 게임 개발의 특정 영역에서 문제 가 될 수 있다는 것이므로 이러한 영역에서 언급 한 숫자 지식과 적절한 데이터 유형이 필요합니다.
postgoodism

훌륭한 연결과 maik semder에 대한 답변 모두 +1. 또한 코드에서 어떤 종류의 작업을 사용해야하는지 알지 못하기 때문에 이러한 종류의 오류로 어려움을 겪는 사람들을 보았습니다.
Ali1S232

@postgoodism 답변 주셔서 감사합니다. 입력을 무시하지 않습니다. 응답이 더 있는지 하루나 이틀 정도 기다려도됩니다.
Inisheer

@MaikSemder 기본적으로 fp:fast다음과 같이 fp:precise여러 가지 이상한 문제가 있음을 원하지 않는 한 사용 하십시오 (@postgoodism과 같은 물리학과 같은 복잡한 계산에서 발견 될 수 있음). 고마워, 이것에 대해 궁금했다.
Nikos
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.