J'ai écrit ce code et la première fois du résultat de boucle est 99. Pourquoi le résultat 99, quand il devrait être 100?Pourquoi un + = 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;
}
}
le résultat de ce code
99
119
127
, mais si je l'utilise cmath bibliothèque, il est bonne réponse
#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;
}
}
le résultat de ce code
100
120
128
pourrait Quelqu'un explique-t-il pourquoi?
pow est pour les doubles non entiers. Rappelez-vous la conversion d'un double en entier tronque. – drescherjm
Puisque vous utilisez 'pow' vous devriez lire: http://stackoverflow.com/questions/588004/is-floating-point-math-broken – NathanOliver
Pas sûr à 100% s'il devrait être utilisé comme cible de dupe. – NathanOliver