如何使lineEdit在Qt中显示十进制数而不是科学

时间:2017-01-28 17:54:56

标签: qt

这是我的应用程序的一部分,它是Qt中的计算器:

 QString ss;
QTextStream (&ss) << expression();  // expression() return a double value
result_box -> setText(ss); // result_box is a lineEdit

当我输入10^6并且函数expression()返回该值时,在result_box中将显示其科学记数, 1e + 06

如何让应用以十进制显示结果, 1000000 而非科学记数法?

更新后的部分:

我想我应该为此编写一个代码:

if( d is like an int number)
    result_box -> setText(QString::number(d , 'f', 0));
else if ( d is a double number with n numbers after point)
   result_box -> setText(QString::number(d , 'f', n));

1 个答案:

答案 0 :(得分:0)

您希望使用'f'代替'g',因为'g'采用最简洁的格式。

http://doc.qt.io/qt-5/qstring.html#argument-formats

QString ss;
QTextStream (&ss) << 1000000.0;
ui->lineEdit->setText( QString::number( ss.toDouble() , 'f') );

.toDouble( &ok ); // if you want to check if the conversion actually worked.

默认情况下,精度是6,如果你想要别的东西,你可以设置它,否则不需要。

简而言之:

result_box->setText( QString::number( expression( ) , 'f' ) );

会帮你解决问题。