qt - 使用固定位数格式化 QString
问题描述
当sprintf()
我想用固定位数格式化数字时,我必须使用格式字符串,如"%.3f"
or "%2d"
。现在 Qt 手册说,我必须使用QStrings::arg()
-function 而不是sprintf()
:
QString("%1").arg(QString::number(1.3));
那么如何指定结果字符串中显示的位数?谢谢 :-)
解决方案
QString::arg
您可以使用以下方式指定格式QString::arg
:
%.3f
:QString("%1").arg(1.3, 0, 'f', 3)
: 其中第二个参数是字段宽度(0
这里是结果字符串的最小宽度),第三个是数字的格式,(在这种情况下f
意味着不使用科学计数法),第四个是精度(3小数位数)。%2d
:QString("%1").arg(42, 2)
.
注意:使用QString::arg
时必须小心使用适当的数据类型。例如,如果您想50
用一位零小数格式化数字,您必须使用QString("%1").arg(50.0, 0, 'f', 1)
. 如果您QString("%1").arg(50, 0, 'f', 1)
改用(注意 50 是一个整数),由于参数冲突,代码将无法编译。
这是在 Qt 中执行此操作的首选方式,特别是在格式化字符串必须本地化的情况下。主要原因之一是值的占位符有一个索引 ( %1
, %2
...),允许它们在字符串中按任何顺序排列并保持它们的语义(在某些语言中您可能需要更改顺序).. 使用时sprintf
-like 函数参数的顺序很重要。
QString::asprintf
尽管如此,虽然在新的 Qt 代码中不推荐使用,但您可以使用sprintf
-like QString::asprintf
(不要使用已QString::sprintf
弃用的)。例如,QString::asprintf("%.3f", 1.3)
。
推荐阅读
- javascript - react-big-scheduler - Redux 和原型
- python - 从容器(docker)访问服务器资源
- php - 如何重命名必须上传并保存到文件夹的文件
- php - 用户生成的内联 css 是否存在任何安全风险
- python - 如何在特定条件下将两列合并到第三列
- html - 我应该把下拉值放在哪里?在数据库或 HTML 中
- java - 如何使用 jdbc 模板在 Spring 应用程序中进行并发隔离
- javascript - React JS - 在 HTTP fetch 中修改正文 JSON
- rest - 如果原始 POST 有效负载被映射到一个对象,它在休息控制器中是否可用,否则?
- python - 从导出的 csv 中读取由 pandas 创建的数据透视表