Javascript: Вставить Math.sqrt в int?
Я искал через google (возможно, я не выглядел достаточно сложно), но я не мог найти, как включить Math.sqrt в int.
Я хочу использовать Math.sqrt для цикла для, и я предполагаю, что мне это нужно как int, но я не могу понять, как отличить результат от int. Итак, как мне это сделать?
Я попробовал нечто похожее на Java:
(int) Math.sqrt(num);
Но это не сработало.
Заранее спасибо:)
Ответы
Ответ 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.