Kayan Nokta Hassasiyeti (fp: hassas ve fp: hızlı)


10

C veya C ++ 'da kayan nokta hassasiyetinin derleyici seçeneği gerçek dünyadaki (küçük / indie) oyunlarda gerçekten bir fark yaratıyor mu?

Gözlemlerimden, fp: fast ayarı fp: precise ve burada anladığımdan çok daha hızlı ( /programming/6889522/fpfast-vs-fpprecise-what-kind-of-errors-can -i-karşılaşma ) iki derleyici seçeneği arasındaki duyarlık farkı yalnızca kayan nokta sayısının 16. basamağından değişir.

Herkes fp: fast kullanırken bir örnekle karşılaştı mı? 2D veya 3D oyunlar için hızlı bir şekilde yanlış gitti mi?

Düzenleme: Açıklığa kavuşturmak için, kayan nokta değerlerinin kendilerinin (yani float vs double vs decimal) hassasiyetini sormuyorum. Sadece derleyici seçeneğiyle ilgili hassasiyet hakkında.

Yanıtlar:


11

Fp: fast vs fp: kesinlikli yorumlarınız şüpheli; Eminim 16. ondalık basamaktan sonraki yuvarlama hatasından daha fazla bir etkisi vardır. Daha fazla ayrıntı için sizi Bruce Dawson'un kayan nokta hassasiyeti makalesine yönlendiriyorum .

Genel olarak, kayan nokta hassasiyeti hatası oyun geliştirmede kesinlikle gerçek bir sorundur. Özellikle fizik programcıları ve büyük dünyalara veya uzun çalışma sürelerine sahip oyunlar (MMO gibi haftalar veya aylar için) zahmetlidir. Kayan nokta hassasiyeti hataları çoğunlukla zaman içinde giderek kötüleşen simülasyon kararsızlığı ve gerginlik hareketi olarak kendini gösterir. Oyununuzda bu tür eserler görmüyorsanız ve performans artışı önemliyse, fp: fast'a sadık kalmak kesinlikle güvenli olmalıdır.


1
-1 Kayan nokta hassasiyeti oyun geliştirmede büyük bir sorun değildir. Yanlış veri türlerini seçmek ve sayısal bilgi ve algoritma eksikliği bu yazıda bahsedilen tüm sorunların sebebidir. Katıldığım tüm projelerde fp: fast kullanıldı.
Maik Semder

Evet, sonuçlarımız aynı. Demek istediğim, kayan nokta hassasiyetinin oyun geliştirmenin belirli alanlarında bir sorun olabileceğiydi ve bu yüzden (bu alanlarda) bahsettiğiniz sayısal bilgiye ve uygun veri türlerine ihtiyacınız var.
postgoodism

Her iki harika bağlantı için +1 ve cevap için maik semder verdiniz. İnsanların bu tür hatalarla mücadele ettiğini gördüm, çünkü kodlarında ne tür operasyonlar kullanmaları gerektiğini bilmiyorlar.
Ali1S232

@postgoodism Cevap verdiğiniz için teşekkürler. Girişinizi göz ardı etmemek. Daha fazla yanıt alıp alamayacağımı görmek için bir iki gün daha bekleyebiliriz.
Inisheer

@MaikSemder Temelde sadece fp:fasto zaman kullanın , eğer gerçekten fp:precisegarip sorunları fark ederseniz (oyunların karmaşık hesaplamalarda @postgoodism'in söylediği gibi fizik gibi fark edilebilir) fark etmediğiniz sürece kullanın . Teşekkürler, bunu merak ediyordum.
Nikos
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.