在中,对QString格式化输出double的定义只有一个,
Q_REQUIRED_RESULT QString arg(double a, int fieldWidth = 0, char fmt = 'g', int prec = -1, QChar fillChar = QLatin1Char(' ')) const;
那要如何使用呢?
看代码,
qreal Radius1 = 023.4567;
qreal Radius2 = 456.12345;
QString text = QString("Radius==%1,%2").arg((double)Radius1, 6, 'f', 2, '0')
.arg((double)Radius2, 6, 'f', 2, '0');
那么,你这时候得到的text格式是这样的,
Radius==023.45,456.12
其中
-- fieldWidth参考表示总共占多少位。这里023.45和456.12,包括小数点总共6位;
-- fmt = 'g' 表示使用科学计数法;'f'表示浮点格式;还不明白的话就自己试一下;
--prec 是表示precision,也就是小数点后几位的意思;
--fillChar表示填充,这里用的是’0‘,例如23,45只有5位,前面用’0‘填充,所以格式化后就是'023.45';
注意:
参数fieldWidth如果少于实际的话,比如这里是5的话,456.12还是会格式化为456.12,但23.45不会再显示为023.45,而是23.45;也就是前面只会填充,但不会截断。
其余的定义如short,ushort,int等道理相同。
题外话:Qt自己搞了一个特有的格式化,感觉多此一举。如果不熟悉的话,可以使用c++标准的sprintf来替代他。
本文结束。