我通过谷歌搜索过(也许我看起来不够努力),但我找不到如何将Math.sqrt转换为int。
我想将Math.sqrt用于 for 循环,我想我需要它作为一个int,但我似乎无法弄清楚如何将结果转换为int。那我该怎么做呢?
我尝试了类似于Java的东西:
(int) Math.sqrt(num);
但它不起作用。
提前致谢:)
答案 0 :(得分:24)
根据您的特定舍入需求,使用Math.round
,Math.ceil
或Math.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舍入。