Floating Point Precision (fp: tepat vs fp: cepat)

10

Dalam C atau C ++, apakah opsi kompiler presisi floating point benar-benar membuat perbedaan dalam game dunia nyata (kecil / indie)?

Dari pengamatan saya, pengaturan fp: fast jauh lebih cepat daripada fp: tepat dan dari apa yang saya mengerti di sini ( /programming/6889522/fpfast-vs-fpprecise-what-kind-of-errors-can -i-perjumpaan ) perbedaan presisi antara dua opsi kompiler hanya berubah dari digit ke-16 dari angka floating point.

Adakah yang menemukan contoh ketika menggunakan fp: fast beres untuk game 2D atau 3D?

Sunting: Untuk memperjelas, saya tidak bertanya tentang ketepatan nilai floating point itu sendiri (mis. Float vs double vs desimal). Hanya tentang ketepatan terkait dengan opsi kompiler.

Inisheer
sumber

Jawaban:

11

Penafsiran Anda tentang fp: cepat vs fp: tepat terdengar mencurigakan; Saya yakin ada lebih banyak efek daripada hanya kesalahan pembulatan setelah tempat desimal ke-16. Saya merujuk Anda ke artikel Bruce Dawson tentang presisi floating point untuk lebih jelasnya.

Secara umum, kesalahan presisi floating-point jelas merupakan masalah nyata dalam pengembangan game. Ini terutama menyusahkan bagi programmer fisika dan untuk game dengan dunia besar atau waktu berjalan yang lama (dalam urutan minggu atau bulan, seperti MMO). Kesalahan presisi titik mengambang paling sering bermanifestasi sebagai ketidakstabilan simulasi dan gerakan gelisah yang secara bertahap semakin buruk seiring waktu. Jika Anda tidak melihat artefak semacam itu di dalam gim Anda, dan peningkatan kinerjanya signifikan, maka pasti aman menggunakan fp: fast.

postgoodism
sumber
1
-1 Presisi titik apung bukan masalah utama dalam pengembangan game. Memilih tipe data yang salah dan kurangnya pengetahuan numerik dan algoritma adalah penyebab dari semua masalah yang disebutkan dalam posting ini. Semua proyek yang saya ikuti menggunakan fp: fast dengan tidak ada masalah yang disebutkan.
Maik Semder
Ya, kesimpulan kami sama. Maksud saya adalah bahwa presisi floating point bisa menjadi masalah di area pengembangan game tertentu, dan itulah sebabnya (di area tersebut) Anda membutuhkan pengetahuan numerik dan tipe data yang tepat yang Anda sebutkan.
postgoodism
+1 untuk kedua tautan hebat, dan untuk jawaban yang Anda berikan maik semder. Saya juga melihat orang-orang berjuang dengan kesalahan semacam itu, hanya karena mereka tidak tahu jenis operasi apa yang harus mereka gunakan dalam kode mereka.
Ali1S232
@ postgoodism Terima kasih telah menjawab. Tidak mengabaikan input Anda. Tunggu saja satu atau dua hari lagi untuk melihat apakah saya mendapat lebih banyak tanggapan.
Inisheer
@MaikSemder Pada dasarnya gunakan saja fp:fast, kecuali jika Anda benar-benar ingin fp:precisejika Anda melihat berbagai masalah aneh (dapat dilihat dalam perhitungan kompleks dalam permainan, seperti fisika seperti kata @postgoodism). Terima kasih, ingin tahu tentang ini.
Nikos