JavaScript: приведите Math.sqrt к int? - PullRequest
       20

JavaScript: приведите Math.sqrt к int?

12 голосов
/ 01 февраля 2009

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

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

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

(int) Math.sqrt(num);

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

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

Ответы [ 5 ]

24 голосов
/ 01 февраля 2009

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

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

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

5 голосов
/ 01 февраля 2009

Кто-то предложил parseInt. Это происходит от строки до типа int, но легко превратить число с плавающей точкой в ​​строку.

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

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

4 голосов
/ 01 февраля 2009

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

Math.floor(Math.sqrt(num));
3 голосов
/ 28 апреля 2012

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

1 голос
/ 16 января 2013

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

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

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

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

РЕДАКТИРОВАТЬ: как примечание это будет округляться до 0.

...