J'ai été surpris quand j'ai débogué mon code. Ici, je donne un exemple de codePas exactement convertit du double en int - semble problème est dans les instructions CPU
#include<QMessageBox>
#include<iostream>
#include<math.h>
#include<QApplication>
using namespace std;
class MyMessageBox: public QMessageBox
{
public:
MyMessageBox(string message,QWidget *parent=0) :
QMessageBox(
QMessageBox::NoIcon,
QString("ErrorMessage"),
QString(message.c_str()),
QMessageBox::Ok,
parent,
Qt::Widget)
{
}
};
void Hai()
{
int tempi = 4;
double a = pow(10,tempi);
int temp = int(pow(10,tempi));
//int temp=a;
MyMessageBox mb1((QString::number(pow(10,tempi))+
" *** "+
QString::number(temp)).toStdString());
mb1.exec();
}
int main(int argc, char * argv[])
{
QApplication app(argc,argv);
Hai();
return app.exec();
}
et le résultat est,
10000 *** 9999
Et le point principal est, cette chose ne se produit que pour l'alimentation 4 (= pow (x, 4), et non pour tout autre pouvoirs
EDIT:.
J'ai essayé un minimum de code avec Visual studio, mais il donne 10 000 exactement, mais, il n'a jamais compilé jusqu'à ce que je fait le type c. onversion explicitement. Le code est donné ci-dessous
#include<iostream>
#include<math.h>
using namespace std;
void Hai()
{
int tempi = 4;
double a=pow(10.0,tempi);
int temp=pow(10.0,tempi);
cout << " a " << a << " temp " << temp << endl ;
}
int main(int argc, char * argv[])
{
Hai();
return 1;
}
Veuillez essayer de donner des exemples minimaux. Votre exemple contient une pile de QT qui n'a rien à voir avec rien - un programme de 10 lignes utilisant 'printf()' montrerait aussi le problème. –
@j_random_hacker Veuillez voir la modification – prabhakaran
Utilisez-vous le même compilateur et la même plateforme pour les deux exemples? Si c'est le cas, il dépend de QT après tout! (Et si ce n'est pas le cas, je suggérerais de le faire pour confirmer que QT est le coupable.) –