1
这是我所做的代码,有人可以解释为什么输出保持0.0吗?Math.pow()不工作?
(我试图让该二进制转换为十进制的程序,我知道,这可以在java中轻松地完成以其他方式)
package main;
import java.util.Scanner;
public class Class1 {
public static void main(String[] args)
{
Scanner scanner = new Scanner(System.in);
String input = scanner.nextLine();
int length = input.length();
double output=0.0;
String reverse = new StringBuffer(input).reverse().toString();
for (int i=0; i==length; i+=1){
switch(reverse.charAt(i)){
case '1': output = (output + (Math.pow(2, i)));break;
case '0': break;
}
}
System.out.println(output);
}
}
作为备注:Math.pow()与按位运算相比非常慢。你应该避免在诸如乘以2或制作一个数字的平方等微不足道的情况下。 –
感谢您的帮助,我现在更好地解决了循环问题,但您能否解释一下您的意思:使用1 << i以及它看起来如何? – StijnOnline
你现在有'Math.pow(2,i)'的地方,用'1 << i'代替。 –