将double转换并格式化为QString

时间:2015-05-05 14:16:08

标签: c++ string qt

我正在尝试将一个double附加到QString,以便12.34显示为012.34。所以,如果我有这两个变量:

double num = 12.34;
QString str = "literal ";

我想将数字附加到字符串中,以便生成literal 012.34

修改 格式需要为xxx.xx,即小数点前三位,后面两位,总是。这是一种要求。我可以简单地在数字之前附加零,然后我需要检查数字是否小于100;我不认为这是最好的方式,我可能是错的。

我正在模拟某种气候室。双数表示温度结果在-40和150之间变化。我将构造的字符串写入串行设备,而另一个设备上的程序将期望此格式对其执行某些操作。我是Qt的新手,也不是很擅长C ++,有点像我这样学习。

2 个答案:

答案 0 :(得分:4)

QString{ "literal %1" }.arg( 12.34, 6, 'g', -1, '0' )
// Returns "literal 012.34"

这将始终为您提供至少6个字符的输出(5位数加上小数点或6位数)。可替换地:

QString{ "literal %1" }.arg( 12.34, 6, 'f', 2, '0' )
// Returns "literal 012.34"

总是会给出至少6个字符的输出,小数点后总是两位数。

注意支持的构造函数调用需要C ++ 11或更高版本,如果您不能使用该版本的标准,请切换到使用括号。

答案 1 :(得分:-1)

更新

我建议您this一个人阅读。

QString zeroString( "0" );
QString( "literal %1%2" ).arg( zeroString ).arg( 12.34, 0, 'f', 2 );

但是你应该指定添加zeroString的原因。