Я ищу несколько советов для Qt-программы, над которой я работаю, которая использует Qwt для рисования линейного графика.Использование QPointF с большими суммами
В основном моя проблема возникает из-за оси x графика, которая находится в 24:00. У меня есть QPolygonF
, в котором хранится серия QPointF
s, в которой хранятся значения для моей кривой графика, где каждый 1.0
по оси x равен 1 секунде. Затем я использую временные метки unix для установки каждого значения для оси x, поэтому в основном у меня есть double xAxis
, инициализированный до 0.0
, который добавляется к QPolygonF
как points.append(xAxis, yAxis)
для начала кривой, и для каждой точки после этого я использую currentTime - prevTime
, чтобы найти разницу между обеими метками времени и затем увеличить xAxis
с помощью указанной разности, используя +=
. Если это имеет смысл.
В любом случае, в настоящее время все отображается в течение целых секунд, и оно отлично работает. Однако мне нужно, чтобы это было точно в миллисекундах. Мне нужно некоторое руководство по работе с большими удвоениями высокой точности.
Работа с временными отметками unix в секундах проста, так как это можно сделать с помощью простого int
, но при увеличении числа цифр, чтобы включить миллисекунды, double
s переключены на научные обозначения.
Мой вопрос: как я могу хранить потенциально большие числа, например 22429.388 или больше, если они возвращаются к научной нотации?
Спасибо и простите, если это очень простой вопрос.
Спасибо, что ответили! Извините, я имел в виду, что график отображается в 'hh: mm'. Это может быть более 24 часов. Я использую 'int' в настоящее время, что отлично подходит для точности до hh: mm: ss'. На этот раз я постараюсь быть более ясным: проблема, с которой я сталкиваюсь, заключается в использовании больших чисел с «двойниками», которые мне нужны для 'QPointF', которые содержат координаты для моей кривой графика. Поскольку удваивается до шести цифр, прежде чем перейти к научной нотации, максимальная «двойная», которую я могу иметь, составляет 999,999, что составляет около 16 минут. Если разница между 'currentTime - prevTime' составляет более 17 минут, я не могу ее вычислить. – mrwolf
double имеет гораздо лучшую точность, чем то, что вы говорите. Если вы получите только три цифры, просто не печатайте их правильно. Где вы видели, что 999.999 будет самой большой ценностью, которую вы могли бы получить? – jpo38