我有这样的代码,我试图从henon公式得到数字
public class henon
{
public static void main(String[] args)
{
double a = 0.3;
double b = 1.4;
double k[] = new double[1026];
k[0] = 0.01;
k[1] = 0.02;
for(int i = 0; i < 1024; i++)
{
k[i+2] = 1 - (a * Math.pow(k[i+1], 2) + b * k[i]);
System.out.println( "nilai ke" + i +" adalah " + k[i]);
}
}
}
如何在24,25中获得无限值...如何解决?
答案 0 :(得分:0)
您获得“无限”值,因为您的计算超出了double
数据类型的范围。
如果您需要更多范围,则必须采用类似bignum库的内容,例如BigDecimal。
答案 1 :(得分:0)
BigDecimal更符合您的要求。
double和float对于准确的结果没有用,正如Joshua bloch在Effective Java中所说的那样。
BigDecimal k[] = new BigDecimal[1026];
k[0] = new BigDecimal(0.01);
k[1] = new BigDecimal(0.02);
for (int i = 2; i < k.length; i++) {
k[i]=new BigDecimal(0.0);
}
如果你想要Bigdecimal的双倍值,你可以使用doubleValue()方法。