ความแม่นยำจุดลอยตัว (fp: แม่นยำกับ fp: เร็ว)


10

ใน C หรือ C ++ ตัวเลือกคอมไพเลอร์ของความแม่นยำจุดลอยตัวสร้างความแตกต่างในเกมในโลกแห่งความเป็นจริง (เล็ก / อินดี้) หรือไม่?

จากการสังเกตของฉันการตั้งค่า fp: เร็วเร็วกว่า fp: แม่นยำหลายเท่าและจากสิ่งที่ฉันเข้าใจที่นี่ ( /programming/6889522/fpfast-vs-fpprecise-what-kind-of-errors-can -i-เผชิญหน้า ) ความแตกต่างที่แม่นยำระหว่างตัวเลือกคอมไพเลอร์สองตัวจะเปลี่ยนจากตัวเลขหลักที่ 16 ของตัวเลขทศนิยมเท่านั้น

มีใครพบตัวอย่างเมื่อใช้ fp: ผิดอย่างรวดเร็วสำหรับเกม 2D หรือ 3D หรือไม่?

แก้ไข: เพื่อความกระจ่างแจ้งฉันไม่ได้ถามเกี่ยวกับความแม่นยำของค่าจุดลอยตัวด้วยตนเอง (เช่น float vs double และทศนิยม) ความแม่นยำเกี่ยวกับตัวเลือกคอมไพเลอร์เท่านั้น

คำตอบ:


11

การตีความ fp: fast vs fp ของคุณ: ฟังดูแม่นยำอย่างน่าสงสัย ฉันแน่ใจว่ามีผลมากกว่าการปัดเศษผิดพลาดหลังตำแหน่งทศนิยมที่ 16 ฉันแนะนำคุณให้รู้จักกับบทความของ Bruce Dawson เกี่ยวกับความแม่นยำของจุดลอยตัวสำหรับรายละเอียดเพิ่มเติม

โดยทั่วไปจุดลอยตัวข้อผิดพลาดความแม่นยำแน่นอนปัญหาที่แท้จริงในการพัฒนาเกม โดยเฉพาะอย่างยิ่งมันลำบากสำหรับโปรแกรมเมอร์ฟิสิกส์และสำหรับเกมที่มีโลกขนาดใหญ่หรือวิ่งเป็นเวลานาน (ตามลำดับของสัปดาห์หรือเดือนเช่น MMO) ข้อผิดพลาดที่มีความแม่นยำของจุดลอยตัวส่วนใหญ่มักแสดงให้เห็นถึงความไม่แน่นอนของการจำลองและการเคลื่อนไหวที่กระวนกระวายใจซึ่งค่อยๆแย่ลงเมื่อเวลาผ่านไป หากคุณไม่เห็นสิ่งประดิษฐ์ประเภทต่าง ๆ ในเกมของคุณและการเพิ่มประสิทธิภาพนั้นมีความสำคัญอย่างยิ่งแน่นอนว่ามันจะปลอดภัยเมื่อใช้ fp: เร็ว


1
-1 ความแม่นยำของจุดลอยตัวไม่ใช่ปัญหาสำคัญในการพัฒนาเกม การเลือกประเภทข้อมูลที่ไม่ถูกต้องและขาดความรู้เชิงตัวเลขและอัลกอริทึมเป็นสาเหตุของปัญหาทั้งหมดที่กล่าวถึงในโพสต์นี้ ทุกโครงการที่ฉันเข้าร่วมใช้ fp: fast โดยไม่มีปัญหาที่กล่าวถึง
Maik Semder

ใช่ข้อสรุปของเราเหมือนกัน ประเด็นของฉันคือความแม่นยำจุดลอยตัวอาจเป็นปัญหาในบางพื้นที่ของการพัฒนาเกมและนั่นคือสาเหตุที่คุณจำเป็นต้องมีความรู้เชิงตัวเลขและชนิดข้อมูลที่เหมาะสมที่คุณกล่าวถึง
postgoodism

+1 สำหรับลิงก์ที่ยอดเยี่ยมทั้งสองและสำหรับคำตอบที่คุณให้ไว้ Maik Semder ฉันเคยเห็นคนที่ต้องดิ้นรนกับข้อผิดพลาดประเภทนั้นเพียงเพราะพวกเขาไม่รู้ว่าควรใช้การทำงานแบบใดในรหัสของพวกเขา
Ali1S232

@postgoodism ขอบคุณสำหรับการตอบรับ ไม่สนใจอินพุตของคุณ อาจรออีกวันหรือสองวันเพื่อดูว่าฉันได้รับคำตอบเพิ่มหรือไม่
Inisheer

@MaikSemder โดยทั่วไปfp:fastแล้วใช้ถ้าคุณไม่ต้องการจริงๆfp:preciseถ้าคุณสังเกตเห็นปัญหาแปลก ๆ (สามารถสังเกตได้ในการคำนวณที่ซับซ้อนในเกมเช่นฟิสิกส์ตาม @postgoodism กล่าว) ขอบคุณกำลังสงสัยในเรื่องนี้
Nikos
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.