舍入大斐波那契数字

时间:2017-06-24 16:54:35

标签: java java.util.scanner fibonacci

伙计们,希望你能指出我,我错过了什么。我是编程和解决Project Euler问题的新手。其中一项任务是计算偶数Fibonacci序列的总和。我编写的代码通过了5个测试中的4个。这是:

public class TextFieldCustom extends TextField {

  public TextFieldCustom(){
  }

  @Override
  public void replaceText(int start, int end, String string) {
    if (string.matches("[0-9,]")|| string.isEmpty()){
        super.replaceText(start, end, string);
    }
  }

  @Override
  public void replaceSelection(String string){
    super.replaceSelection(string);
  }
}

这是我的问题:当我用大数字进行测试时,在F(71)附近会发生一些四舍五入。 根据我的代码,F(71)是308 061 521 170 130,根据WolphramAlpha计算308 061 521 170 129.

因此,最终的总和是错误的。

另外,在测试时我打印出所有数字并识别出偶数数字每3个重复一次。但即使我将它简化为每三个数字的小循环,仍存在问题。

如果我不使用Math.round,我的序列错误......

1 个答案:

答案 0 :(得分:0)

double精度有限。尝试使用BigDecimal,其精度仅受可用内存大小的限制。

以下是使用BigDecimal s计算平方根的方法:Square root of BigDecimal in Java

pow()Java's BigDecimal.power(BigDecimal exponent): Is there a Java library that does it?

舍入:Java BigDecimal: Round to the nearest whole value

加法和除法等其他操作作为方法内置于BigDecimal