Qt - QString 数字格式字符串 (cformat),选项?
Qt - QString Numerical Format String (cformat), Options?
我有用户提供的格式字符串(例如“%.2f”)和一个 QVariant 类型,我试图将其组合以输出为(格式化的)字符串。
我已经走上了使用 QString::asprintf(const char *cformat, ...) 的道路,我将在其中提供适当的转换数据类型,如下所示:
QString result_str = QString::asprintf(disp_fmt.toUtf8(),variant_type.toUInt());
这在大多数情况下工作正常,尤其是当我将浮点数作为输入时。但是,如果我在这个特定的 integer (.toUInt()) 转换案例中的格式字符串包括十进制格式(例如“%.2f”),那么我得到一个常量结果“0.00” .这让我感到惊讶,因为我期望只是将“.00”附加到整数上,就像我在其他语言(如 Perl)中看到的那样。
我在这里错过了什么?另外,我知道最近添加了 asprintf() 并且文档现在已经建议改用 QTextStream 或 arg() 。但是,我认为这不是我使用这种格式字符串样式的选项。谢谢
格式字符串需要 double
,但您提供的是 int
。如果您提供一个实际的双精度值,它就会起作用,如下所示:
QString result_str = QString::asprintf(disp_fmt.toUtf8(),variant_type.toDouble());
另请注意,此行为与标准 C 库函数的工作方式相同(std::sprintf
,等等)。
我有用户提供的格式字符串(例如“%.2f”)和一个 QVariant 类型,我试图将其组合以输出为(格式化的)字符串。
我已经走上了使用 QString::asprintf(const char *cformat, ...) 的道路,我将在其中提供适当的转换数据类型,如下所示:
QString result_str = QString::asprintf(disp_fmt.toUtf8(),variant_type.toUInt());
这在大多数情况下工作正常,尤其是当我将浮点数作为输入时。但是,如果我在这个特定的 integer (.toUInt()) 转换案例中的格式字符串包括十进制格式(例如“%.2f”),那么我得到一个常量结果“0.00” .这让我感到惊讶,因为我期望只是将“.00”附加到整数上,就像我在其他语言(如 Perl)中看到的那样。
我在这里错过了什么?另外,我知道最近添加了 asprintf() 并且文档现在已经建议改用 QTextStream 或 arg() 。但是,我认为这不是我使用这种格式字符串样式的选项。谢谢
格式字符串需要 double
,但您提供的是 int
。如果您提供一个实际的双精度值,它就会起作用,如下所示:
QString result_str = QString::asprintf(disp_fmt.toUtf8(),variant_type.toDouble());
另请注意,此行为与标准 C 库函数的工作方式相同(std::sprintf
,等等)。