Вопрос

Я поискал в Google (возможно, я недостаточно внимательно искал), но я не смог найти, как превратить Math.sqrt в int.

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

Я попробовал что-то похожее на Java:

(int) Math.sqrt(num);

Но это не сработало.

Заранее спасибо :)

Это было полезно?

Решение

Использование Math.round, Math.ceil, или Math.floor в зависимости от ваших конкретных потребностей в округлении.

"Для округления чисел до целых предпочтительны Math.round, Math.ceil и Math.floor, а для желаемого результата, который может быть выражен в виде 32-разрядного целого числа со знаком, также может подойти побитовая операция, описанная ниже".

-http://www.jibbering.com/faq/faq_notes/type_convert.html#tcNumber

Другие советы

Кто-то предложил parseInt.Это переходит из string в int , но легко превратить float в строку.

parseInt(Math.sqrt(num)+"")

Помните, что независимо от того, что вы делаете, JavaScript всегда использует значения с плавающей точкой.Не существует целочисленного типа.

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

Math.floor(Math.sqrt(num));

Используя parseInt(Math.sqrt(num)+"") медленнее, чем использование Math.round(Math.sqrt(num)).Я думаю, это потому, что в первом примере вы создаете строку, анализируя целочисленное значение num и округляет его.во втором примере вы просто берете значение int и округляете его.

я знаю, что это старый вопрос, но я полагаю, что любой, кто найдет это позже....

я не буду повторять то, что говорят другие ответы, но забавный маленький трюк, который вы можете сделать, это:

Math.sqrt(2); //1.41......
~~Math.sqrt(2); //1

двойное побитовое отрицание удаляет все, что находится после десятичной запятой.мне говорили, что это немного быстрее, но я не совсем уверен.

Редактировать:в качестве примечания это значение округлится до 0.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top