我已经通过谷歌搜索(也许我看起来不够努力)但我找不到如何将 Math.sqrt 变成 int。
我想将 Math.sqrt 用于for循环,我想我需要它作为 int 但我似乎无法弄清楚如何将结果转换为 int。那么我该怎么做呢?
我尝试了类似于 Java 的东西:
(int) Math.sqrt(num);
但它没有用。
提前致谢 :)
我已经通过谷歌搜索(也许我看起来不够努力)但我找不到如何将 Math.sqrt 变成 int。
我想将 Math.sqrt 用于for循环,我想我需要它作为 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。这从一个字符串到一个 int,但很容易将一个浮点数变成一个字符串。
parseInt(Math.sqrt(num)+"")
请记住,无论您做什么,JavaScript 总是使用浮点数。没有整数类型。
Math.floor 会做到这一点。不过,怀疑你甚至需要去一个整数。
Math.floor(Math.sqrt(num));
usingparseInt(Math.sqrt(num)+"")
比 using 慢Math.round(Math.sqrt(num))
。我认为这是因为在第一个示例中,您正在创建字符串、解析整数值num
并对其进行舍入。在第二个示例中,您只需采用 int 并对其进行舍入。
我知道这是一个老问题,但我想为以后发现这个问题的人提供帮助......
我不会重申其他答案所说的内容,但是您可以做的一个有趣的小技巧是:
Math.sqrt(2); //1.41......
~~Math.sqrt(2); //1
双位负数会去掉小数点后的任何内容。有人告诉我它稍微快一点,但我并不完全相信。
编辑:作为注释,这将向 0 舍入。