1.double,float 四舍五入,保留小数位数。
void MainWindow::on_pushButton_clicked() { double number=3.141592; double result=MyRound(number,3); qDebug()<<result;//3.142 } #include <iostream> #include <sstream> #include <iomanip> using namespace std; double MainWindow::MyRound(double number,unsigned int bits) { stringstream ss; ss << fixed << setprecision(bits) << number; ss >> number; return number; }
2.std::to_string 数字转换成string,C++11才支持此函数,转换后小数位数是6位,无法控制小数保留位数。使用的时候可以先四舍五入后,再使用to_string 转换字符串,截取。
float number=3.14; std::string str=std::to_string(number);//3.140000 qDebug()<<QString::fromStdString(str);
获得指定保留小数位数的字符串
void MainWindow::on_pushButton_clicked() { float number=3.141592; number=MyRound(number,3);//3.142 std::string str=std::to_string(number);//3.142000 str=str.substr(0,str.find(‘.‘)+4);//"3.142" qDebug()<<QString::fromStdString(str); } float MainWindow::MyRound(float number,unsigned int bits) { stringstream ss; ss << fixed << setprecision(bits) << number; ss >> number; return number; }
3.std::stoi/stol/stoll 函数,字符串转换成整数,但不会四舍五入。
string str1="12.76"; int i1=stoi(str1);//12 qDebug()<<i1;