【发布时间】:2017-08-12 23:02:40
【问题描述】:
我正在用 Java 编写一个程序,看看 Benford 定律是否真的正确。我正在使用 BigDecimal,但自从我实施以来一直出现错误。
import java.lang.*;
import java.math.BigDecimal;
public class BenfordLaw {
public static int oneornot(BigDecimal number) {
String str2num = number.toString();
if(str2num.startsWith("1")) {
return 1;
} else {
return 0;
}
}
public static void main(String[] args) {
int n = 0;
long sum = 0;
for (int i = 0; i < 10000; i++) {
BigDecimal number = BigDecimal.valueOf(Math.pow(2,n));
System.out.println(number);
double newnum = oneornot(number);
sum += newnum;
n+=1;
}
System.out.println(sum);
System.out.println(sum*0.0001);
}
}
如果您运行此程序,则会出现错误。 错误在下面的链接中。 https://pastebin.com/ShJmGjdJ
【问题讨论】:
标签: java bigdecimal benfords-law