double转换为QString,保留小数点后位数)
直接使用QString::number()的函数容易被四舍五入掉
则可以使用
double d =0.0;
QString str=QString::number(d,'f', 6));//6代表保留小数点后六位
QString str=QString::number(d,'f', 7));//代表保留小数点后7位
上面就是最简单的用法,但是存在一种需求,没有到6位则保留自身的位数,到了6位数,则保留六位,我们可以采取这样的方式
//取最大6位,如果位数低,则删除对应位数
#include <QDebug>
#include <QString>
double d1 = 0.04;
double d2 = 0.046777777;
QString strd1 = QString::number(d1,'f',6);
//输出为0.040000
qDebug()<< strd2;
while((strd1.at(strd1.size()-1) == "0" || strd1.at(strd1.size()-1) == ".") && strd1.contains(".") && strd1.size() >= 1)
{
strd1 = strd1.left(strd1.size() -1);
}
//输出为 0.04
qDebug()<< strd1;
QString strd2 = QString::number(d2,'f',6);
//输出为 0.046778(会四舍五入)
qDebug()<< strd2;
while((strd2.at(strd2.size()-1) == "0" || strd2.at(strd2.size()-1) == ".") && strd2.contains(".") && strd2.size() >= 1)
{
strd2 = strd2.left(strd2.size() -1);
}
//输出为 0.046778(会四舍五入)
qDebug()<< strd2;