Witam che obliczyć ciąg Fibbonacciego dla 300 i do teog mam kod:
public static double Fibonacci(double n)
{
if (n == 0)
return 0;
if (n == 1 || n == 2)
return 1;
double[,] A = new double[2, 2] { { 0, 1 }, { 1, 1 } };
double[,] B = (double[,])A.Clone();
double[,] C = new double[2, 2];
n -= 2;
for (double i = 1; i <= n; i++)
{
C[0, 0] = B[0, 0] * A[0, 0] + B[0, 1] * A[1, 0];
C[0, 1] = B[0, 0] * A[0, 1] + B[0, 1] * A[1, 1];
C[1, 0] = B[1, 0] * A[0, 0] + B[1, 1] * A[1, 0];
C[1, 1] = B[1, 0] * A[0, 1] + B[1, 1] * A[1, 1];
B = (double[,])C.Clone();
}
return C[1, 1];
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show(Fibonacci(Convert.ToDouble(textBox1.Text)).ToString());
}
Jednak nie działa on tak jakbym chciał, gdyż dla 300 zamiast otrzymać wartość: "222232244629420445529739893461909967206666939096499764990979600", otrzymuję wartość: "22223224462942E+62"
W jaki sposób przekształcić mój kod, żeby zwracał "normalną" wartość? Z góry dziękuję za odpowiedź:)
Domyślam się, że trzeba użyć jakiegoś przekształcenia liczby zmiennoprzecinkowej na całkowitą,.. Ale nie bardzo wiem jak to dobrze zrobić :)