这个是QString::arg()转换的bug吗,有人遇到吗

weixin_38048553 2019-09-19 07:19:02
使用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'
...全文
20 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复

472

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧