Как эффективно округлить (этаж) целое число в Java? - PullRequest
1 голос
/ 04 декабря 2011

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

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

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

Ответы [ 2 ]

6 голосов
/ 04 декабря 2011

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

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

2 голосов
/ 04 декабря 2011

int всегда принимает недесятичный ответ. Поэтому используйте

int i=24378/1000;

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...