Про цілі числа вже є хороша відповідь, але я вважаю, що плаваючі точки не повинні бути усунені. У своїй відповіді Byte56 взяв можливість піти на максимальну орбіту Плутона, ймовірно, взяту з цього листа excel , тому я дотримуюся цього.
Це встановлює межі Сонячної системи на:
7,376,000,000 км = 7,376x10 ^ 9 км = 7,376x10 ^ 14 см ≈ 7,4x10 ^ 14 см
Формат з плаваючою комою подвійної точності пропонує максимальну точність до 15 значних десятків. Тож вам пощастило: якщо ваше походження знаходиться в центрі Сонця і ви використовуєте положення навколо Плутона, ви можете зобразити всі сантиметри, наприклад, у C ++:
printf("%.0Lf\n", 7.4e14);
printf("%.0Lf\n", 7.4e14 + 1.0);
printf("%.0Lf\n", 7.4e14 + 2.0);
Output:
-------
740000000000000
740000000000001
740000000000002
Тож якщо ви можете обмежити свою гру на орбіті Плутона, то вітайте! У вас є достатня точність з подвоєннями, щоб представляти це.
Але будьте обережні, цього достатньо, щоб представити це в симуляції , але не сподівайтесь, що це буде безболісно. Вам доведеться перетворити на 32-розрядні поплавці, можливо, змінити своє походження, щоб ви отримали достатню точність на близьких об'єктах, і вам, мабуть, доведеться покластися на деякі хитрості Z-буфера та камери фрустум-хитрість, щоб все це правильно відобразити .
Тепер, якщо ви хочете, щоб ваші космонавти відвідали якісь далекі комети в хмарі Оорта , який набагато більший, тоді все закінчилося. Приблизно 10 ^ 16 см, ви починаєте втрачати точність:
printf("%.0Lf\n", 1.0e16);
printf("%.0Lf\n", 1.0e16 + 1.0);
printf("%.0Lf\n", 1.0e16 + 2.0);
Output:
-------
10000000000000000
10000000000000000 <-- oops
10000000000000002
І далі, звичайно, стає гірше.
Тож якщо ви в цьому випадку, ви можете спробувати кілька більш просунутих рішень. Пропоную поглянути на статтю Пітера Фрізе в Ігрових програмуючих дорогоцінних каменях 4: «2.3 Розв’язання задач на точність у великих світових координатах». IIRC, він пропонує систему, яка може відповідати вашим потребам, це справді якесь безліч різних проміжків координат.
Це лише деякі підказки, ймовірно, вам доведеться скористатись власним рецептом, щоб розпочати це. Хтось, хто вже реалізував подібні речі, може допомогти вам більше. Чому, наприклад, не запустити електронний лист хлопцям, що стоять за космічною програмою Kerbal ?
Успіхів у вашій грі!