Tamsayılar hakkında zaten iyi bir cevap var, ama kayan noktaların ortadan kaldırılmaması gerektiğini hissediyorum. Cevabında Byte56, muhtemelen bu excel sayfasından alınan Plüton'un maksimum yörüngesine gitme seçeneğini aldı, bu yüzden buna bağlı kalacağım.
Güneş sistemi sınırlarını şu şekilde yerleştirir:
7.376.000.000 km = 7.376x10 ^ 9 km = 7.376x10 ^ 14 cm ≈ 7.4x10 ^ 14 cm
Çift Hassas kayan nokta formatı teklifler 15 önemli ondalık maksimum hassasiyet. Şanslısınız: Eğer kaynağınız Güneş'in merkezinde ise ve Pluto çevresinde bir konum kullanıyorsanız, tüm santimetreleri temsil edebilirsiniz , örneğin C ++:
printf("%.0Lf\n", 7.4e14);
printf("%.0Lf\n", 7.4e14 + 1.0);
printf("%.0Lf\n", 7.4e14 + 2.0);
Output:
-------
740000000000000
740000000000001
740000000000002
Eğer oyununuzu Plüton yörüngesiyle sınırlayabilirseniz, tebrikler! Bunu temsil etmek için iki katına çıkacak kadar hassasiyetiniz var.
Bir de temsil edecek yeterli olduğunu ama dikkatli olun simülasyon , ancak beklemeyin hale acısız bu. 32 bit şamandıralara dönüştürmeniz gerekecek, belki başlangıç noktanızı değiştireceksiniz, böylece yakın nesnelerde yeterince hassasiyet elde edeceksiniz ve muhtemelen tüm bunları düzgün bir şekilde işlemek için bazı Z-tampon ve kamera frustum hilelerine güvenmeniz gerekecek. .
Şimdi, astronotlarınızın Oort bulutundaki çok uzak kuyruklu yıldızları ziyaret etmesini istiyorsanız , bu çok daha büyük, o zaman bitti. Yaklaşık 10 ^ 16 cm, doğruluk kaybına başlarsınız:
printf("%.0Lf\n", 1.0e16);
printf("%.0Lf\n", 1.0e16 + 1.0);
printf("%.0Lf\n", 1.0e16 + 2.0);
Output:
-------
10000000000000000
10000000000000000 <-- oops
10000000000000002
Ve elbette daha da kötüleşiyor.
Bu durumda, daha gelişmiş çözümler denemek isteyebilirsiniz. Peter Freeze'nin Game Programming Gems 4: "2.3 Büyük Dünya Koordinatlarında Doğruluk Sorunlarını Çözme" başlıklı makalesine göz atmanızı öneririm . IIRC, ihtiyaçlarınızı karşılayabilecek bir sistem öneriyor, aslında bir çeşit çoklu farklı koordinat alanı.
Bu sadece bazı ipuçları, muhtemelen bunu çalıştırmak için kendi tarifinizi kullanmanız gerekecek. Bu tür şeyleri zaten uygulayan biri size daha fazla yardımcı olabilir. Örneğin Kerbal Uzay Programının arkasındaki çocuklara neden bir e-posta atmıyorsunuz ?
Oyununuzda iyi şanslar!