-2

我有这样的代码,我尝试从 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 中获得无穷大值...如何解决?

4

2 回答 2

0

您获得“无限”值是因为您的计算超出了double数据类型的范围。

如果你需要更多的范围,你将不得不求助于 bignum 库之类的东西,比如BigDecimal

于 2012-04-24T12:38:32.643 回答
0

BigDecimal更适合您的要求。

正如 Joshua bloch 在 Effective Java 中所说,double 和 float 对于准确的结果没有用处。

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() 方法。

于 2012-04-24T12:42:30.327 回答