【发布时间】:2021-05-18 21:42:27
【问题描述】:
我正在尝试将二进制数(由具有 0 和 1 的数组构造)转换为十进制值。每次我运行程序时,十进制值都会偏离。我想知道循环内的小数点代码是否错误?到目前为止,这是我所拥有的:
class Main {
public static void main(String[] args) {
int decimal = 0;
int[] arrayNums = new int[8];
for(int i=0; i<8; i++) {
arrayNums[i] = (int)(Math.random()*2);
System.out.print(arrayNums[i]);
}
for(int i=0; i<8; i++) {
for(int j=7; j>=0; j--) {
decimal += arrayNums[i]*(int)Math.pow(2,j);
}
}
System.out.println();
System.out.print("The decimal value is: " + decimal);
}
}
【问题讨论】:
-
""十进制值相差甚远 - 请展示一些输入和输出示例,并说明您为调试代码所做的工作。您是否在 IDE 调试器中单步执行?
-
您可以将数组转换为字符串并使用
Integer.parseInt(string, 2)。这还将您的二进制数转换为十进制数。例如。String string = Arrays.stream(arrayNums).boxed().map(i -> Integer.toString(i)).collect(Collectors.joining())
标签: java arrays for-loop binary decimal