将QString / QByteArray转换为Scientific Notation qt

时间:2014-10-01 17:11:33

标签: c++ qt type-conversion

有没有办法轻松将显示某个大整数的QByteArrayQStringint转换为科学记数法?我需要在QLineEdit中将其显示为字符串。

我确信这已被问到,但我还没找到我要找的东西。

QByteArray475000000转换为QString4.75E8

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

最简单的选择是将字符串转换为数字,然后将数字转换为字符串 有很多可能性:

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');