我们需要使用long和Long.toUnsignedString()作为水稻的类型,但是Math.Power正在将其更改为double
package com.company;
public class Main {
public static void main(String[] args) {
int rk = 0;
for (byte feld = 1; feld < 65; feld++) {
System.out.println("Feld: " + feld + ", Reiskörner: " + Math.pow(2, rk));
rk = rk+1;
}
}
}我测试了很多东西,但都没有用。产出如下:
Feld: 1, Reiskörner: 1.0
Feld: 2, Reiskörner: 2.0
Feld: 3, Reiskörner: 4.0
...
Feld: 63, Reiskörner: 4.6116860184273879E18
Feld: 64, Reiskörner: 9.223372036854776E18包括:
Feld: 1, Reiskörner: 1
Feld: 2, Reiskörner: 2
...发布于 2020-12-20 14:41:57
在循环中多次调用Math.pow()是效率低下的,而您只需要每次乘以两次:
public static void main(String[] args) {
long rk = 1;
for (byte feld = 1; feld < 65; feld++) {
System.out.println("Feld: " + feld + ", Reiskörner: " + Long.toUnsignedString(rk));
rk *= 2;
}
}这也适用于长负数(打印为无符号),例如当结果太大,无法适应有符号的长,因为乘法工作的预期,不像从双转换。
https://stackoverflow.com/questions/65380761
复制相似问题