2013-07-09 2 views
0

Да, я знаю, что перед запятой задан десятичный или плавающий, и я знаю их использование, и что десятичная точность является точной, а float неточна.Для RPG масштабированное целое число против десятичного?

В игре, над которой я работаю, у меня есть игрок со скоростью движения 36 пикселов в секунду. Я обновляю это примерно 10 раз в секунду, делая его 3.6 каждый раз. Я хочу, чтобы это было точным, но decimal занимает 16 байт (128 бит), что много. Если я хочу сохранить точность, следует ли вместо этого использовать целое число и масштабировать числа? Или .. Поплавок более подходит? Float и Int32 оба занимают 4 байта, но целое число не потеряет никаких чисел. Так не должно ли Integer быть более подходящим? Тогда почему кто-нибудь когда-либо использовал float?

Итак, в основном, какой я должен использовать для скорости и точности? Я использую десятичное значение в данный момент. Я хочу изменить его, прежде чем я получу слишком много деталей в игре, иначе вам будет сложнее сделать все эти изменения.

+2

Я никогда не думал, что 128 бит - это много, но я думаю, что я большой источник, когда дело доходит до данных. – austin

+2

Ответьте на свой вопрос наукой. Вы обновляете каждые 100 миллисекунд. Процессорный цикл, скажем, одна наносекунда. Таким образом, вы получите 100 миллионов циклов для выполнения ваших расчетов. Измерить, сколько циклов вам потребуется для выполнения ваших расчетов, а затем вы узнаете, превышен ли вы бюджет или бюджет. Никто из нас здесь не может сделать этот анализ для вас. –

ответ

1

16 Байты много по сравнению с другими типами. Идите с тем, что удовлетворяет вашим требованиям, и преждевременной оптимизации.

Вы также можете рассмотреть возможность использования int и интерпретации его как x/10, таким образом, неточность не будет накапливаться. Но только если эти 128 битов действительно обманывают вас (чего они не должны, imho).

+0

Вот что я думал об этом. Есть ли недостатки в использовании целого числа? Я не уверен, но поскольку десятичное значение занимает больше байтов, чем целое число, я предполагал, что он медленнее. Если вы знаете, какой из них медленнее? – Dave

+0

Я так не думаю. Результат, безусловно, будет лучше, если вы используете int вместо float, поскольку int не полагается на экспоненциальное представление внутри, как это делают типы float. Итак, в основном, жизнеспособный выбор. –

+0

Да, я пойду с целым. благодаря – Dave

Смежные вопросы