Ich bin neu hier, also tut mir leid, wenn meine Frage eine Art dumm ist, aber ich berechnete die Divisionen von zwei großen Zahlen und speichert sie in einem Array, wie folgt:Große Zahlen-Division gibt 1 zurück [C++]
int det(double M[25][25], int m)
{
/*returns large numbers*/
}
int main()
{
float y[27];
double A[25][25] = {0}, N = 26, D = -134430487042201894894174208;
y[0] = 0;
y[26] = 1;
for (int i = 0; i < N-1; i++)
{
//Reset A[][] to the original
for (int k = 0; k < N-1; k++)
{
for (int J = 0; J < N-1; J++)
{
A[k][J] = m[k][J];
}
}
//Change values of A[j][i]
for (int j = 0; j < N-1; j++)
{
A[j][i] = d[j+1];
}
y[i+1] = det(A,N-1)/D; //Here y returns only 0, 1, 1, 1, 1, ...
}
}D
Also, was mache ich falsch? y-Array liefert 0, 1, 1, 1, 1, ..., und es sollte nicht mehr als 1
det (A, N-1) = 7958284334509567005163520 D = -134430487042201894894174208
det sein (A, N-1)/D = -0,05919999629259109195883585509348322869497780932400145347 ...
Es ist nicht 1.
Dank!
Die Konstante '134430487042201894894174208' ist auf den meisten Plattformen nicht darstellbar. –
Diese Zahlen sehen sehr groß aus. Überprüfen Sie die [limits] (http://en.cppreference.com/w/cpp/types/numeric_limits) der Datentypen, die Sie verwenden. Sie benötigen möglicherweise eine Bignum-Bibliothek, um einigermaßen genaue Ergebnisse zu erhalten. – nwp
Ihr Beispiel kompiliert nicht. 'm' und' d' sind nicht definiert. Bitte gib ein [MCVE] an. –