Qt 保留小数点 固定长度 QString 格式化

发布于:2025-02-23 ⋅ 阅读:(18) ⋅ 点赞:(0)

 QString的arg()函数格式化输出double类型数值,包括fieldWidth、fmt、prec和fillChar参数的作用。示例代码展示了如何设置精度和填充字符,以及字段宽度的影响。文中提到,当fieldWidth小于实际长度时,前面的填充不会被截断。此外,还建议不熟悉Qt格式化的开发者可以使用标准的sprintf函数作为替代。

 

    Q_REQUIRED_RESULT QString arg(double a, int fieldWidth = 0, 
    char fmt = 'g', int prec = -1,
                QChar fillChar = QLatin1Char(' ')) const;

1. double 直接格式化



double length = 2.55;

QString str = QString::number(length , 'f', 2);

其中f代表非科学计数法格式,2代表小数点后两位。

2. 添加字符串同时格式化 double

double distance= 2.23355;
QString showText = QString("距离:%1").arg(distance, 6, 'f', 2, ' ');

-- fieldWidth参考表示总共占多少位。这里2.23355,包括小数点总共6位;

-- fmt = 'g' 表示使用科学计数法;'f'表示浮点格式;

--prec 是表示precision,也就是小数点后几位的意思;

--fillChar表示填充,这里用的空格 ' ',例如23,45只有5位,前面用’ ‘填充,所以格式化后就是'23.45';

这里填充的是空格 ' '; 因为是数字

注意:

参数fieldWidth如果少于实际的话,比如这里是5的话,123.12还是会格式化为123.12,但23.45不会再显示为023.45,而是23.45;也就是前面只会填充,但不会截断。

其余的定义如short,ushort,int等道理相同。

3. 添加字符串同时格式化 double ,多个参数

double length = 212.4567;
double height= 323.12345;
QString showText = QString("length: %1,height : %2").arg((double)length, 6, 'f', 2, '0')
                    .arg((double)height, 6, 'f', 2, '0');

-- fieldWidth参考表示总共占多少位。这里212.4567,包括小数点总共7位, 会省略 一位

-- fmt = 'g' 表示使用科学计数法;'f'表示浮点格式;

--prec 是表示precision,也就是小数点后几位的意思;

--fillChar表示填充,这里用空格代替,如用是’0‘,例如12.451只有5位,前面用’0‘填充,所以格式化后就是'012.451';

4. 将 int 整型数转成固定长度的QString

QString str = QString(%0).arg(1, 4, 10, QChar('0'));

将数字1转成“0001”的QString表示的方法为:


网站公告

今日签到

点亮在社区的每一天
去签到