Je cherche un conseil pour un programme Qt sur lequel je travaille, qui utilise Qwt pour tracer un graphique linéaire. Fondamentalement, mon problème provient de l'axe x du graphique, qui est en 24:00 heure. J'ai un QPolygonF
qui stocke une série de QPointF
s qui détiennent les valeurs pour ma courbe de tracé, où chaque 1.0
dans l'axe x équivaut à 1 seconde. J'utilise ensuite timestamp unix pour définir chaque valeur pour l'axe x, donc j'ai double xAxis
initialisé à 0.0
qui est ajouté au QPolygonF
comme points.append(xAxis, yAxis)
pour le début de la courbe et pour chaque point par la suite, j'utilise currentTime - prevTime
pour trouver la différence entre les deux horodatages puis augmenter xAxis
par ladite différence en utilisant +=
. Si ça a du sens.Utilisation de QPointF avec Big Doubles
Quoi qu'il en soit, actuellement tout est affiché en secondes entières et il fonctionne parfaitement bien. Cependant, j'en ai besoin pour être précis à la milliseconde. Ce dont j'ai besoin de conseils est de travailler avec de grands doubles de haute précision.
Travailler avec les horodatages unix en secondes est facile car cela peut être fait avec un simple int
, mais lorsque vous augmentez le nombre de chiffres pour inclure des millisecondes double
s sont passés en notation scientifique.
Ma question est: comment puis-je stocker des nombres potentiellement importants, comme 22429.388 ou plus, s'ils retournent à la notation scientifique?
Merci et désolé si c'est une question très basique.
Merci d'avoir répondu! Je suis désolé, je voulais dire que le graphique est affiché dans 'hh: mm'. Cela pourrait durer plus de 24 heures. J'utilise 'int's actuellement, ce qui est parfaitement correct pour une précision allant jusqu'à' hh: mm: ss'. Je vais essayer d'être plus clair cette fois: le problème que je rencontre est d'utiliser de grands nombres avec 'doubles', dont j'ai besoin pour le' QPointF' qui contient les coordonnées de ma courbe de tracé. Comme les doubles ne contiennent que 6 chiffres avant de passer à la notation scientifique, le maximum que je peux avoir est de 999,999, soit environ 16 minutes. Si la différence entre 'currentTime - prevTime' est plus de 17 minutes je ne peux pas le calculer. – mrwolf
double a une bien meilleure précision que ce que vous dites. Si vous obtenez seulement trois chiffres, c'est juste que vous ne l'imprimez pas correctement. Où avez-vous vu que 999,999 serait la plus grande valeur que vous pourriez obtenir? – jpo38