Я пытаюсь создать программу, которая создает квадрат поверх плитки на карте плитки. Плитки 64 на 64. Я думал, что мне нужно получить координаты мыши, округлить ее до ближайшего кратного 64, и разделить это на 64, чтобы получить координату плитки. Есть ли способ лучше? Должен ли я делать все кнопки плитки? Благодаря!Как округлить число до ближайшего кратного 64
3
A
ответ
7
Вы можете сделать это следующим образом:
int number = 445226;
int roundoff = (number+0x20)&(~0x3f);
Он работает следующим образом:
- Вы сначала добавить
32
(0x20
) к числу так, чтобы оно округляется вверх/вниз. Это означает, что все ниже32
приведет к значению ниже64
и всему, что больше32
, к значению, превышающему64
. - Вы маскируете последние шесть бит.
В целом побитовые операции выполняются быстрее, чем деление и умножение. И так как вы просите силы в два, это хороший хак производительности, который вы можете использовать.
Но если вас интересует координата плитки, вам не нужно ее снова умножать на 64
. В этом случае вы можете использовать:
int number = 445226;
int div64 = (number+0x20)>>0x06; //this is divided by 64, not rounded
О пользовательском интерфейсе, как всегда mutliple правильные ответы, но если вы собираетесь рисовать какую-то карту на него, я думаю, координаты лучше, чем кнопки. Особенно, если позже в процессе люди смогут щелкнуть элементы на карте, которые лежат между двумя кнопками.
2
Для положительных целых чисел:
int m64 = 64 * ((n + 32)/64);
Или больше фантазии, потому что 64 случается быть степенью 2:
int m64 = ((n + 32) >> 6) << 6;
Смежные вопросы
- 1. Как округлить до кратного определенного числа JavaScript?
- 2. Как округлить число до ближайшего 10?
- 3. Excel: как округлить число до ближайшего десяти?
- 4. Как округлить число до ближайшего .5?
- 5. Округление числа до ближайшего кратного 5
- 6. Как всегда округлить до ближайшего кратного X в Javascript?
- 7. Как вы можете округлить до ближайшего кратного 20in Java?
- 8. Круглых переменный до следующего ближайшего кратного X
- 9. Как округлить до ближайшего 0.5?
- 10. Круглый число до ближайшего кратного 0.11 через JavaScript
- 11. Как округлить до ближайшего четвёртую
- 12. Как округлить до ближайшего 0.5?
- 13. Раунд до ближайшего кратного числа
- 14. Ruby 2.0 - округление целого числа до ближайшего кратного значения 10
- 15. Круглый номер до ближайшего кратного 3
- 16. округлый до ближайшего кратного 1/16 в C
- 17. Python - Как я округлить число до ближайшего пятого последнего значения
- 18. C#: как округлить целое число до ближайшего 1000
- 19. Как округлить число до ближайшего x инкрементного значения
- 20. Как округлить (вверх) десятичное число до ближайшего восьмого в C
- 21. C# Как округлить число до ближайшего числа в геометрической последовательности
- 22. Как округлить значение UP до ближайшего коэффициента числа
- 23. VBA: округление до ближайшего кратного числа
- 24. округлить до следующего кратного 10 vb
- 25. Как округлить x-ticklabels до ближайшего 50
- 26. Как округлить до ближайшего 10-го места
- 27. Как округлить до ближайшего цента в Java
- 28. Как округлить значение до ближайшего целого
- 29. Как округлить Avg() до ближайшего целого? Джанго
- 30. Как округлить двойное до ближайшего четного числа
Здесь вы разделите его на 64, вам нужно округлить. И разделение на '64' можно сделать более эффективно, переместив ... –
Зачем ему это нужно? Не округляется ли целая операция с ближайшей единицей? – JClassic
@JClassic no. Целочисленная арифметика * trucates *, например вызов 'floor()', например '9/10 -> 0', который не округляется до ближайшего целого числа, а следующее целое число ниже результата разделения. – Bohemian