Javascript:将Math.sqrt转换为int?

时间:2009-02-01 05:38:58

标签: javascript math type-conversion int casting

我通过谷歌搜索过(也许我看起来不够努力),但我找不到如何将Math.sqrt转换为int。

我想将Math.sqrt用于 for 循环,我想我需要它作为一个int,但我似乎无法弄清楚如何将结果转换为int。那我该怎么做呢?

我尝试了类似于Java的东西:

(int) Math.sqrt(num);

但它不起作用。

提前致谢:)

5 个答案:

答案 0 :(得分:24)

根据您的特定舍入需求,使用Math.roundMath.ceilMath.floor

“对于将数字舍入为整数,Math.round,Math.ceil和Math.floor之一是优选的,对于可以表示为32位有符号整数的所需结果,下面描述的按位运算也可能服“。

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

答案 1 :(得分:5)

有人建议使用parseInt。这从字符串变为int,但很容易将float转换为字符串。

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

请记住,无论你做什么,JavaScript总是使用浮动。没有整数类型。

答案 2 :(得分:4)

Math.floor会这样做。不过,你甚至需要去一个整数。

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

答案 3 :(得分:3)

使用parseInt(Math.sqrt(num)+"")比使用Math.round(Math.sqrt(num))要慢。我认为这是因为在第一个示例中,您正在创建字符串,解析整数值num并对其进行舍入。在第二个例子中,你只需要使用int并将其舍入。

答案 4 :(得分:1)

我知道这是一个老问题,但我认为有人会在以后发现这个......

我不会重申其他答案所说的,但你可以做的一个有趣的小技巧是:

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

双位按位负数会在小数点后丢弃任何内容。我被告知它稍快一点,但我并不完全相信。

编辑:作为注释,这将向0舍入。