2016-07-11 5 views
0

J'ai essayé de sortir un long double à la console directement en utilisant qDebug() et indirectement via QString::number() mais les deux n'acceptent pas long double.Sortie long double à la console

Est-il vrai qu'il n'y a pas de moyen facile d'imprimer un nombre à virgule flottante long double sur la console en utilisant Qt? Pourquoi?!

+0

Puisqu'un 'long double 'n'a pas besoin de prendre plus d'espace, alors un' double', ils peuvent avoir estimé qu'il était inutile. – NathanOliver

+0

@NathanOliver: Cela dépend de votre plate-forme. Windows 16 bits utilise 80 bits pour «long double» et 64 bits pour «double». Je ne serais pas surpris s'il y a d'autres exemples. –

+1

Vous pouvez utiliser ce http://stackoverflow.com/questions/2326850/long-double-to-string – demonplus

Répondre

0

Il n'y a pas de raison majeure. Au moins à partir de Qt 5.6, personne n'a pris la peine de l'implémenter. C'est tout.

2

Vous pouvez fournir votre propre surcharge de operator<<():

QDebug& operator<<(QDebug& d, long double f) 
{ 
    return d << static_cast<double>(f); 
} 

Cela ne vous montrera pas une précision supplémentaire, bien sûr, mais peut-être ce dont vous avez besoin. Cependant, sachez qu'une future version de Qt pourrait implémenter une telle fonction, vous mettant en infraction avec la règle de définition unique. Pour éviter cela, vous devez le garder avec un test #if approprié pour la version exacte de Qt (ou la plage de versions) que vous avez vérifiée et qui ne fournit pas de définition conflictuelle. En outre, veuillez considérer contributing your implementation to Qt.