Sudah ada jawaban yang bagus tentang bilangan bulat, tapi saya merasa seperti floating-point tidak harus dihilangkan. Dalam jawabannya, Byte56 mengambil pilihan untuk mencari orbit maksimum Pluto, mungkin diambil dari lembar excel ini , jadi saya akan tetap berpegang pada itu.
Itu menempatkan batas tata surya di:
7.376.000.000 km = 7.376x10 ^ 9 km = 7.376x10 ^ 14 cm ≈ 7.4x10 ^ 14 cm
The Double-presisi floating-point format yang menawarkan presisi maksimal 15 desimal signifikan. Jadi Anda beruntung: jika asal Anda berada di pusat Matahari dan Anda menggunakan posisi di sekitar Pluto, Anda dapat mewakili semua sentimeter, misalnya dalam C ++:
printf("%.0Lf\n", 7.4e14);
printf("%.0Lf\n", 7.4e14 + 1.0);
printf("%.0Lf\n", 7.4e14 + 2.0);
Output:
-------
740000000000000
740000000000001
740000000000002
Jadi, jika Anda dapat membatasi gim Anda hingga orbit Pluto, maka selamat! Anda memiliki ketepatan yang cukup dengan ganda untuk mewakilinya.
Berhati-hatilah, itu cukup untuk merepresentasikannya dalam simulasi , tetapi jangan berharap untuk membuat ini tanpa rasa sakit. Anda harus mengonversi ke pelampung 32-bit, mungkin mengubah asal Anda sehingga Anda mendapatkan cukup presisi pada objek dekat, dan Anda mungkin harus bergantung pada beberapa tipu daya Z-buffer dan kamera untuk mendapatkan semua ini agar ditampilkan dengan benar .
Sekarang, jika Anda ingin astronot Anda mengunjungi beberapa komet yang jauh di awan Oort , yang jauh lebih besar, maka itu sudah berakhir. Sekitar 10 ^ 16 cm, Anda mulai kehilangan keakuratan:
printf("%.0Lf\n", 1.0e16);
printf("%.0Lf\n", 1.0e16 + 1.0);
printf("%.0Lf\n", 1.0e16 + 2.0);
Output:
-------
10000000000000000
10000000000000000 <-- oops
10000000000000002
Dan semakin memburuk, tentu saja.
Jadi jika Anda dalam hal ini, Anda mungkin ingin mencoba beberapa solusi yang lebih maju. Saya sarankan Anda melihat artikel Peter Freeze di Game Programming Gems 4: "2.3 Memecahkan Masalah Akurasi di Koordinat Dunia Besar". IIRC, ia menyarankan sistem yang mungkin sesuai dengan kebutuhan Anda, itu memang semacam beberapa ruang koordinasi yang berbeda.
Itu hanya beberapa petunjuk, Anda mungkin harus menggunakan beberapa resep Anda sendiri untuk menjalankan ini. Seseorang yang sudah menerapkan hal semacam itu mungkin dapat membantu Anda lebih banyak. Mengapa tidak mengirim email ke orang-orang di belakang Program Luar Angkasa Kerbal misalnya?
Semoga berhasil dengan game Anda!