Javascript:Преобразовать Math.sqrt в int?
-
20-08-2019 - |
Вопрос
Я поискал в 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.