Je suis nouveau ici, donc je suis désolé si ma question est un peu stupide, mais, je calculais les divisions de deux grands nombres et de les stocker dans un tableau, comme ceci:Division des grands nombres renvoie 1 [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
Alors, qu'est-ce que je fais mal? tableau y retourne 0, 1, 1, 1, 1, ..., et il était censé ne pas être une
det (A, N-1) = D = 7958284334509567005163520 -134430487042201894894174208
det (A, N-1)/D = -0,05919999629259109195883585509348322869497780932400145347 ...
Ce n'est pas 1.
Merci!
La constante '134430487042201894894174208' n'est pas représentable sur la plupart des plates-formes. –
Ces chiffres semblent très grands. Vérifiez les [limites] (http://en.cppreference.com/w/cpp/types/numeric_limits) des types de données que vous utilisez. Vous pourriez avoir besoin d'une bibliothèque bignum pour obtenir des résultats raisonnablement précis. – nwp
Votre exemple ne compile pas. 'm' et' d' ne sont pas définis. S'il vous plaît fournir un [MCVE]. –