Độ chính xác điểm nổi (fp: chính xác so với fp: nhanh)


10

Trong C hoặc C ++, tùy chọn trình biên dịch của độ chính xác dấu phẩy động có thực sự tạo ra sự khác biệt trong các trò chơi trong thế giới thực (nhỏ / độc lập) không?

Từ những quan sát của tôi, cài đặt fp: nhanh nhanh hơn nhiều lần so với fp: chính xác và từ những gì tôi hiểu ở đây ( /programming/6889522/fpfast-vs-fpprecise-what-kind-of-errors-can -i-chạm ) sự khác biệt chính xác giữa hai tùy chọn trình biên dịch chỉ thay đổi từ chữ số thứ 16 của số dấu phẩy động.

Có ai gặp phải một ví dụ khi sử dụng fp: fast đã cực kỳ sai lầm cho các trò chơi 2D hoặc 3D?

Chỉnh sửa: Để làm rõ, tôi không hỏi về độ chính xác của các giá trị dấu phẩy động (ví dụ: float vs double vs binary). Chỉ về độ chính xác liên quan đến tùy chọn trình biên dịch.

Câu trả lời:


11

Giải thích của bạn về fp: fast vs fp: âm thanh chính xác đáng ngờ; Tôi chắc chắn có nhiều ảnh hưởng hơn là chỉ làm tròn lỗi sau vị trí thập phân thứ 16. Tôi giới thiệu bạn đến bài viết của Bruce Dawson về độ chính xác của dấu phẩy động để biết thêm chi tiết.

Nói chung, lỗi chính xác dấu phẩy động chắc chắn là một vấn đề thực sự trong phát triển trò chơi. Điều này đặc biệt rắc rối đối với các lập trình viên vật lý và cho các trò chơi có thế giới rộng lớn hoặc thời gian hoạt động dài (theo thứ tự tuần hoặc tháng, như MMO). Lỗi chính xác điểm nổi thường biểu hiện là sự mất ổn định mô phỏng và chuyển động lộn xộn dần dần trở nên tồi tệ hơn theo thời gian. Nếu bạn không thấy những loại tạo tác đó trong trò chơi của mình và hiệu suất tăng lên đáng kể, thì chắc chắn sẽ an toàn khi gắn bó với fp: nhanh.


1
-1 Độ chính xác của dấu phẩy động không phải là vấn đề chính trong phát triển trò chơi. Chọn các loại dữ liệu sai và thiếu kiến ​​thức và thuật toán số là nguyên nhân của tất cả các vấn đề được đề cập trong bài viết này. Tất cả các dự án tôi tham gia đã sử dụng fp: nhanh mà không có vấn đề nào được đề cập.
Maik

Vâng, kết luận của chúng tôi là như nhau. Quan điểm của tôi là độ chính xác của dấu phẩy động có thể là một vấn đề trong một số lĩnh vực phát triển trò chơi nhất định và đó là lý do tại sao (trong các lĩnh vực đó) bạn cần có kiến ​​thức về số và loại dữ liệu phù hợp mà bạn đã đề cập.
nghĩa hậu hiện đại

+1 cho cả liên kết tuyệt vời và cho câu trả lời bạn đã đưa ra học kỳ maik. Tôi cũng đã thấy mọi người đấu tranh với các loại lỗi đó, đơn giản là vì họ không biết họ nên sử dụng loại hoạt động nào trong mã của mình.
Ali1S 232

@postgoodism Cảm ơn bạn đã trả lời. Không bỏ qua đầu vào của bạn. Chỉ có thể đợi một hoặc hai ngày nữa để xem tôi có nhận được nhiều phản hồi hơn không.
Inisheer

@MaikSemder Về cơ bản chỉ cần sử dụng fp:fastsau đó, trừ khi bạn thực sự muốn fp:precisenếu bạn nhận thấy nhiều vấn đề lạ khác nhau (có thể được chú ý trong các tính toán phức tạp trong các trò chơi, chẳng hạn như vật lý như @postgoodism đã nói). Cảm ơn, đã tự hỏi về điều này.
Nikos
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.