Đã có câu trả lời tốt về số nguyên, nhưng tôi cảm thấy không nên loại bỏ các dấu phẩy động. Trong câu trả lời của mình, Byte56 đã chọn tùy chọn để đi theo quỹ đạo tối đa của Sao Diêm Vương, có lẽ được lấy từ bảng excel này , vì vậy tôi sẽ tuân theo điều đó.
Điều đó đặt ranh giới của hệ mặt trời tại:
7.376.000.000 km = 7.376x10 ^ 9 km = 7.376x10 ^ 14 cm ≈ 7.4x10 ^ 14 cm
Các đúp chính xác dấu chấm động định dạng Mời một độ chính xác tối đa 15 số thập phân có ý nghĩa. Vì vậy, bạn thật may mắn: nếu nguồn gốc của bạn ở trung tâm của Mặt trời và bạn sử dụng một vị trí xung quanh Sao Diêm Vương, bạn có thể đại diện cho tất cả các centimet, ví dụ như trong C ++:
printf("%.0Lf\n", 7.4e14);
printf("%.0Lf\n", 7.4e14 + 1.0);
printf("%.0Lf\n", 7.4e14 + 2.0);
Output:
-------
740000000000000
740000000000001
740000000000002
Vì vậy, nếu bạn có thể giới hạn trò chơi của mình vào quỹ đạo của Sao Diêm Vương, thì xin chúc mừng! Bạn đã có đủ độ chính xác với gấp đôi để thể hiện nó.
Hãy coi chừng, điều đó đủ để thể hiện nó trong một mô phỏng , nhưng đừng hy vọng sẽ thể hiện điều này một cách không đau đớn. Bạn sẽ phải chuyển đổi thành số float 32 bit, có thể thay đổi nguồn gốc của bạn để bạn có đủ độ chính xác trên các vật thể gần gũi và có lẽ bạn sẽ phải dựa vào một số thủ thuật bực bội của bộ đệm Z và máy ảnh để có được tất cả điều này để hiển thị đúng .
Bây giờ, nếu bạn muốn các phi hành gia của bạn đến thăm một số sao chổi ở xa trong đám mây Oort , lớn hơn nhiều, thì nó đã kết thúc. Khoảng 10 ^ 16 cm, bạn bắt đầu mất độ chính xác:
printf("%.0Lf\n", 1.0e16);
printf("%.0Lf\n", 1.0e16 + 1.0);
printf("%.0Lf\n", 1.0e16 + 2.0);
Output:
-------
10000000000000000
10000000000000000 <-- oops
10000000000000002
Và nó trở nên tồi tệ hơn nữa, tất nhiên.
Vì vậy, nếu bạn trong trường hợp này, bạn có thể muốn thử một số giải pháp nâng cao hơn. Tôi khuyên bạn nên xem bài viết của Peter Freeze trong Lập trình trò chơi Gems 4: "2.3 Giải quyết các vấn đề chính xác trong các tọa độ thế giới rộng lớn". IIRC, ông đề xuất một hệ thống có thể phù hợp với nhu cầu của bạn, đó thực sự là một loại nhiều không gian phối hợp khác nhau.
Đó chỉ là một số gợi ý, có lẽ bạn sẽ phải sử dụng một số công thức của riêng bạn để có được hoạt động này. Ai đó đã thực hiện loại công cụ đó có thể giúp bạn nhiều hơn. Tại sao không gửi email cho những kẻ đứng sau Chương trình Không gian Kerbal chẳng hạn?
Chúc may mắn với trò chơi của bạn!