需求:
显示一个float或者double类型的数,要求小数点后的数字位数为定值。
考虑STL库的ostringstream或者Qt的QString::arg(), number
对于stringstream,使用比较繁琐,要联合使用std::fixed和std::setprecision才能实现固定小数位数显示,qstring则要简单一些。看示例:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <sstream>
#include <iomanip>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
double d = 211.23;
std::ostringstream oss;
oss<<std::fixed<<std::setprecision(6)<<d;
ui->lineEdit->setText(QString::fromStdString(oss.str()));
ui->lineEdit_2->setText(QString("%1").arg(d, 0, 'f', 6));
ui->lineEdit_3->setText(QString::number(d, 'f', 6));
}
MainWindow::~MainWindow()
{
delete ui;
}
效果:
注意,使用qstring的时候,不论使用arg还是number,format输入参数都必须是'f',不能用'g',否则可能无法获得理想的效果。