C++无符号int到双转换

C++无符号int到双转换,c++,qt,variables,C++,Qt,Variables,将无符号int转换为double的正确方法是什么?我需要这是为QCPCustomPlot的数据设置,因为它需要在QVector正是作为参数创建一个图形 编辑:我真傻。“内存泄漏”错误问题是因为我错误地初始化了QVector xtime、yipv4int。将时间值更改为与ipv4int相同,以确保数据出现频率与x和y正确匹配 完成了时间变量,现在是有关转换的实际问题。如何将其转换为保存值(如1855919686)的双精度格式,而不是1.85592e+09格式 QCustomPlot需要双精度,但Q

将无符号int转换为double的正确方法是什么?我需要这是为QCPCustomPlot的数据设置,因为它需要在QVector正是作为参数创建一个图形

编辑:我真傻。“内存泄漏”错误问题是因为我错误地初始化了QVector xtime、yipv4int。将时间值更改为与ipv4int相同,以确保数据出现频率与x和y正确匹配

完成了时间变量,现在是有关转换的实际问题。如何将其转换为保存值(如1855919686)的双精度格式,而不是1.85592e+09格式

QCustomPlot需要双精度,但QVector似乎无法接受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];
}

请放心,将无符号int转换为double不会导致内存泄漏

写双b=a;已经足够了,或者只需将a传递给需要double作为参数的函数

请注意,对于IEEE754双精度浮点类型,对于不超过2的53次方的无符号整数,转换是精确的。

时间值是多少?看起来你是这样做的:

QVector<double> x(time);
// [...]
x[o] = dMin;
如果time==166,毫无疑问x[166]会失败,因为向量是用时间大小初始化的


顺便说一下,与转换为double无关。

将无符号int变量转换为double会导致内存泄漏,您是如何注意到这一点的?通常情况并非如此。你需要提供更多关于发生了什么的细节。简单的转换本身不会导致内存泄漏。这是一个完全独立的问题。感谢您澄清转换不会导致内存泄漏,也许我误解了错误消息?诊断中提到的内存问题的原因在其他地方。请确保您也不使用模板函数,因为这也会导致一些错误:例如,如果使用std::acculate将0和1之间的双值相加,但将初始值设置为无符号int,则对元素执行的操作将是整数相加。这是一个严重的错误。时间值为62.3167分钟。双totalmin=totalsec/60和双totalsec=endSecond-startSecond。endSecond和startSecond是无符号整数,它们包含1313743347这样的值,取整数,因此如果time的值为62.3167,它将初始化为62。直接将值从62分配给任何索引可能会在某个点失败,但不一定恰好是在62。我认为你应该考虑调整大小或使用类似的I在你的情况下。
QVector<double> x(time);
// [...]
x[o] = dMin;