使用QPointF和Big Doubles

时间:2016-11-24 21:41:33

标签: c++ qt qwt

我正在寻找一些我正在研究的Qt程序的建议,它使用Qwt绘制折线图。

基本上我的问题来自图表的x轴,即24:00时间。我有一个QPolygonF存储了一系列QPointF s,其中包含我的情节曲线的值,其中x轴中的每个1.0等于1秒。然后我使用unix时间戳来设置x轴的每个值,所以基本上我double xAxis初始化为0.0,它被添加到QPolygonF,如points.append(xAxis, yAxis),用于开始曲线和之后的每个点我使用currentTime - prevTime找到两个时间戳之间的差异,然后使用xAxis通过所述差异增加+=。如果这是有道理的。

无论如何,目前所有内容都会在一秒钟内显示出来并且完美无缺。但是,我需要精确到毫秒。我需要一些指导就是使用大型高精度双打。

使用简单的int可以很容易地使用unix时间戳,因为这可以通过简单的double来完成,但是当你增加包含毫秒数的位数时,00 01 10 11 将被切换为科学记数法。

我的问题是:如果他们恢复科学记数法,我如何存储潜在的大数字,如22429.388或更大?

如果这是一个非常基本的问题,感谢和抱歉。

1 个答案:

答案 0 :(得分:0)

你说你的图轴长24:00。这将是24*3600秒,因此24*3600*1000毫秒:86,400,000小于INT_MAX=2,147,483,647)。

因此,将x值存储为int应该没有问题。您只需要将第一个轴值设为0,然后最后一个轴值为86,400,000

如果你的时间不是从0开始,你只需要定义显示为“参考日期”的最小时间,并根据这个“参考日期”存储值(以保证它们都在00:00:00.0000之间。 (即:0int)和24:00:00.0000(即:86,400,000int))。