将unsigned int
转换为double
的正确方法是什么?我需要这是QCPCustomPlot
用于数据设置,因为它将QVector<double>
精确作为创建图表的参数。
QVector<double> x(time), y(ipv4int)
引起的。将time
值更改为ipv4int
(数据出现频率),x
和y
正确匹配。
使用time
变量完成,现在是有关转换的实际问题。如何将其转换为double
格式,其格式为1855919686
,而不是格式为1.85592e+09
?
QCustomPlot需要double
,但似乎QVector<double>
无法接受像1.85592e + 09这样的值
更新的代码:
QVector<double> x(i), y(totalIP); //i=236052
for(int o = 0; o <= i; o++){
double dSec = arrayIPxTime[o][0] - startSecond; //arrayIPTime[o][0] holds time in second
double dMin = dSec/60;
double ipv4addr = arrayIPxTime[o][1]; //arrayIPTime[o][0] holds ipaddr in integer format
x[o] = dMin;
//y[o] = ipv4addr; this is the line that causes crash.
qDebug()<<"Count "<<o<<" time "<< x[o] <<" ipv4 "<<ipv4addr<<" arrayIPxTime[o][1] "<<arrayIPxTime[o][1];
}
当前输出:
Count 236048 time 62.3167 ipv4 1.85592e+09 arrayIPxTime[o][1] 1855919686
Count 236049 time 62.3167 ipv4 1.85592e+09 arrayIPxTime[o][1] 1855919686
Count 236050 time 62.3167 ipv4 1.85592e+09 arrayIPxTime[o][1] 1855919686
Count 236051 time 62.3167 ipv4 1.85592e+09 arrayIPxTime[o][1] 1855919686
答案 0 :(得分:8)
请放心,将unsigned int
转换为double
不会导致内存泄漏。
撰写double b = a;
绰绰有余,或者只需将a
传递给需要double
作为参数的函数。
请注意,对于IEEE754双精度浮点类型,unsigned int
的转换完全,最高可达到第42次方的2次幂。
答案 1 :(得分:2)
time
的价值是多少?看起来像你这样做:
QVector<double> x(time);
// [...]
x[o] = dMin;
如果时间== 166,毫无疑问x[166]
会失败,因为向量初始化的大小为time
!
顺便说一句,没有任何内容与double
投射有关。