使用Qt的tr("%1").arg(...)转换double到QString会出错,起初以为是内存越界,但是后来用sprintf转换的结果跟它的结果比较,据此判断应该是Qt的Bug。 有没有朋友也遇到这样的情况呢? 我的开发环境为vs2005 + Qt-vs-addin,使用Qt4.5.2 和Qt4.8.4都有这样的问题。代码片段:char buffer[100] = {0}; QString qsTurnoverVol; qsTurnoverVol = tr("%1").arg(price.TurnoverVol, 0, 'f', 0); //test bug { sprintf(buffer, "%.0f", price.TurnoverVol); QString sBuffer(buffer); if (qsTurnoverVol != sBuffer) { QString sInfo = QString("'%1' vs '%2'").arg(qsTurnoverVol).arg(sBuffer); static int times = 5; if (times-- > 0) MessageBox(0, sInfo.toStdWString().c_str(), TEXT("出错啦"), MB_OK); } } 对话框输出:'2590:' vs '25910''2600:' vs '26010'
