0
我是新來的所以我很抱歉,如果我的問題是一種愚蠢的,但是,我計算兩個大數的分割並將它們存儲在一個數組中,如下所示:大數除法返回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
那麼,我做錯了什麼? ÿ陣列返回0,1,1,1,1,...,和它應該不會1個
DET(A,N-1)= 7958284334509567005163520 d = -134430487042201894894174208
DET( A,N-1)/ d = -0.05919999629259109195883585509348322869497780932400145347 ...
這不是1
謝謝!
常量'134430487042201894894174208'在大多數平臺上不可表示。 –
這些數字看起來非常大。檢查您正在使用的數據類型的[limits](http://en.cppreference.com/w/cpp/types/numeric_limits)。您可能需要一個bignum庫來獲得相當準確的結果。 – nwp
你的例子不能編譯。沒有定義'm'和'd'。請提供[MCVE]。 –