【发布时间】:2014-10-01 17:11:33
【问题描述】:
有没有办法轻松地将显示一些大整数的QByteArray 或QString 或int 转换为科学记数法?我需要将其显示为QLineEdit 中的字符串。
我确定这已经被问过了,但我还没有找到我要找的东西。
将QByteArray:475000000 转换为QString:4.75E8
【问题讨论】:
标签: c++ qt type-conversion
有没有办法轻松地将显示一些大整数的QByteArray 或QString 或int 转换为科学记数法?我需要将其显示为QLineEdit 中的字符串。
我确定这已经被问过了,但我还没有找到我要找的东西。
将QByteArray:475000000 转换为QString:4.75E8
【问题讨论】:
标签: c++ qt type-conversion
QString aaa("475000000");
ui->lineEdit->setText(QString::number(aaa.toDouble()));
输出:
4.75e+08
或者
QString aaa("475000000");
QString formatted = QString::number(aaa.toDouble()).remove("+");
ui->lineEdit->setText(formatted.toUpper());
输出:
4.75E08
QString aaa("475000000");
QString formatted = QString::number(aaa.toDouble()).remove("+");
formatted.replace("e0","E");
ui->lineEdit->setText(formatted.toUpper());
输出:
4.75E8
【讨论】:
最简单的选择是将字符串转换为数字,然后将数字转换为字符串。
有很多可能性:
QString aaa("475000000");
double value = aaa.toDouble();
QString cStyleResult = QString::number(value, 'e');
QString localeAwareResult = QLocale::system().toString(value, 'e');
QString noLocaleFormat = QString("value=%1").arg(value, 0, 'e');
QString localeAwareFormat = QString("value=%L1").arg(value, 0, 'e');
【讨论】: