qDebug避免科学计数法打印

2020-04-01 11:18:06 浏览数 (1)

❝qDebug会将浮点型超过一百万的数打印为科学计数法,该如何解决它呢? ❞

代码语言:javascript复制
double d = 1000000;
qDebug() << d;

输出:

代码语言:javascript复制
1e 06

  由于qDebug底层使用QTextStream打印数据,而QTextStream可以设置输出的格式为科学计数法。qDebug不提供设置浮点型数据输出为定点记数法,只能通过其他方式解决。

先转为QString再打印

  • 接口:
代码语言:javascript复制
static QString number(double, char f='g', int prec=6);
  • 例子:
代码语言:javascript复制
double d = 1000000;
qDebug() << QString::number(d, 'f', 0); /* 第三个参数位,保留小数的位数 */
  • 输出:
代码语言:javascript复制
1000000

使用QTextStream

  • 通过设置setRealNumberNotation的FixedNotation模式强制定点记数法。
代码语言:javascript复制
double d = 1000000;
QString str;
QTextStream s(&str);
s.setRealNumberNotation(QTextStream::FixedNotation); /* 使用固定模式 */
s.setRealNumberPrecision(0); /* 保留0位小数 */
s << d;

qDebug() << str;
  • 输出:
代码语言:javascript复制
1000000

0 人点赞