Qu'est-ce que cela signifie lorsqu'un programme C++ imprime le nombre suivant, et quelle est la signification de l'H à la fin?Interpréter l'impression d'un double dénormalisé en C++
-6.38442e-86H
L'ensemble du système est trop grand pour ajouter ici, est cependant ici le code qui imprimé double particulier.
try{
newLogLikelihoodEM= hmm->learningLogLikelihood(data, Arglist::getDiffLogLikelihood(), fileNumbers, rng);
}
catch (SingularCovarianceMatrixException &scme)
{
std::cout << scme.what() << ": doing learning, so restarts for this start-point" << std::endl;
noRestarts++;
restart = true;
}
et la classe exception
class SingularCovarianceMatrixException: public std::exception
{
double det;
public:
SingularCovarianceMatrixException(double det):det(det){};
virtual const char* what() const throw()
{
std::stringstream msg;
msg<< "Singular covariance matrix: determinant="<<det;
return msg.str().c_str();
}
};
Et l'exception est levée par
if(*detCovarianceMatrix<1e-300)
{
throw SingularCovarianceMatrixException(*detCovarianceMatrix);
}
Pouvez-vous ajouter le code qui génère cette sortie? – olevegard
Ce n'est pas dénormal; les dénormaux commencent à '1.0p-1022', ~' 2.2250738585072014e-308'. – ecatmur
Cela signifie que le programme fait quelque chose de plus que d'imprimer la valeur, mais il n'y a aucun moyen de savoir ce que c'est parce qu'il n'y a pas de code ici. –