Как эффективно округлить (этаж) целое число в Java?

1

Мне нужно извлечь "тысячи" из целого числа (например, 1345 → 1; 24378 → 24), и поскольку мое приложение будет делать это много, мне нужно сделать это эффективно.

Конечно, деление на 1000 - это всегда вариант, но разделение - дорогостоящая операция, поэтому я ищу что-то более эффективное.

Целевая платформа - Android, и, насколько я знаю, большинство платформ Android сегодня не имеют математического сопроцессора, поэтому наиболее предпочтительным способом было бы это сделать по-разному, но я не могу понять, как это сделать что и если это возможно вообще...

  • 2
    Вы делаете предварительную зрелую оптимизацию? Сначала убедитесь, что что-либо более эффективное, чем простое целочисленное деление, будет иметь значение для производительности вашего приложения.
  • 1
    Просто используйте встроенный ассемблер. Ой, подождите, это Java? Зачем тогда заботиться о производительности целочисленного деления? ;)
Теги:
math
bit-manipulation

2 ответа

6
Лучший ответ

Математический сопроцессор будет очень полезен для операций с плавающей запятой, но почти каждый современный процессор будет иметь эффективное целочисленное деление.

Серьезно, просто выполните операцию разделения, это почти наверняка будет лучшим вариантом. Хотя смещение битов полезно для деления по степеням двух (например, 1024), в противном случае это не так хорошо.

  • 0
    Большое спасибо, я пойду с вашим советом
2

int всегда принимает не десятичное answer.so использование

int i=24378/1000;

24378/1000 = 24.378, но int займет 24

Ещё вопросы

Сообщество Overcoder
Наверх
Меню