Ich schrieb diesen Code und das erste Mal der Schleife Ergebnis ist 99. Warum ist Ergebnis 99, wenn es 100 sein sollte?Warum a + = b * pow (10, c-i-1) = 99 C++?
#include <iostream>
#include<math.h>
using namespace std;
int main()
{
int skt = 0;
int sk[3];
int nsk = 3;
sk[0]=1;
sk[1]=2;
sk[2]=8;
for (int i=0; i<nsk; i++)
{
skt = skt + (sk[i]*pow(10.0,nsk-i-1));
cout <<" "<<skt<<endl;
}
}
das Ergebnis dieser Code
99
119
127
, aber wenn ich Bibliothek cmath verwenden ist es richtige Antwort
#include <iostream>
#include<cmath>
using namespace std;
int main()
{
int skt = 0;
int sk[3];
int nsk = 3;
sk[0]=1;
sk[1]=2;
sk[2]=8;
for (int i=0; i<nsk; i++)
{
skt = skt + (sk[i]*pow(10.0,nsk-i-1));
cout <<" "<<skt<<endl;
}
}
das Ergebnis dieser Code
100
120
128
Could jemand erklären warum?
Pow ist für doubles nicht ganze Zahlen. Erinnern Sie sich an die Konvertierung von einer doppelten in eine ganze Zahl. – drescherjm
Da Sie 'pow' verwenden, sollten Sie lesen: http://stackoverflow.com/questions/588004/is-floating-point-math-broken – NathanOliver
Nicht 100% sicher, ob es als ein Ziel dupieren sollte. – NathanOliver