Подтвердить что ты не робот

Javascript: Вставить Math.sqrt в int?

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

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

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

(int) Math.sqrt(num);

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

Ответ 3

Math.floor сделает это. Сомневаюсь, что вам даже нужно перейти к целому числу.

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

Ответ 4

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

Ответ 5

Я знаю, что это старый вопрос, но я считаю, что кто-то найдет это позже.

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

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

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

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