Perl 格式化固定十进制标量

Perl 格式化固定十进制标量,perl,printf,Perl,Printf,我一直在试验sprintf,试图将小数位数固定在小数点右边和左边 以下方法可以工作,但不能很好地处理0.00。如您所见,0.00与所有其他非零十进制值一样没有正确对齐 sprintf(“%.2f”,$sw\u chgs) 如果我在sprintf中添加一个字段宽度或指示符,如%6f,“2f”将在小数点后打印 sprintf(“%6f.2f”),$ws\u chgs 535.14 642.90 20.31 1198.35 442.74 531.90 20.31 994.95 0.00

我一直在试验
sprintf
,试图将小数位数固定在小数点右边和左边

以下方法可以工作,但不能很好地处理0.00。如您所见,0.00与所有其他非零十进制值一样没有正确对齐

sprintf(“%.2f”,$sw\u chgs)

如果我在sprintf中添加一个字段宽度或指示符,如%6f,“2f”将在小数点后打印

sprintf(“%6f.2f”),$ws\u chgs

535.14  642.90  20.31  1198.35
442.74  531.90  20.31  994.95
0.00  0.00  0.00  0.00
244.100000.2f

我想做一些像下面这样的事情来限制整数的字段宽度

sprintf(“%6d”,$prev\u rd)


十进制值可以吗?

请注意,
6
是格式化字符串中所有字符的总数

 sprintf("%06.2f ", 1);
输出

001.00
  1.00
或者没有前导零

sprintf("%6.2f ", 1);
输出

001.00
  1.00

请注意,
6
是格式化字符串中所有字符的总数

 sprintf("%06.2f ", 1);
输出

001.00
  1.00
或者没有前导零

sprintf("%6.2f ", 1);
输出

001.00
  1.00

您误解了
printf
格式的格式。它有点像这样:

"%" <padding>? <minimum width>? "." <precision>? <type>
印刷品

 535.14 :  642.90 :   20.31 : 1198.35
 442.74 :  531.90 :   20.31 :  994.95
   0.00 :    0.00 :    0.00 :    0.00
请注意,最小宽度包括十进制分隔符


宽度和精度参数不包括像
f
这样的类型。因此,您的
%6f.2f
被解析为模式
%6f
,它位于非特殊字符串
.2f

之前。您误解了
printf
格式的格式。这有点类似:

"%" <padding>? <minimum width>? "." <precision>? <type>
印刷品

 535.14 :  642.90 :   20.31 : 1198.35
 442.74 :  531.90 :   20.31 :  994.95
   0.00 :    0.00 :    0.00 :    0.00
请注意,最小宽度包括十进制分隔符


宽度和精度参数不包括像
f
这样的类型。因此,您的
%6f.2f
被解析为模式
%6f
,它位于非特殊字符串
.2f

sprintf(“%6.2f”,1”)之前;如果没有前导零填充wanted@MiguelPrz用于Sprintf(“%6.2f”,1)的tnx;如果没有前导零填充wanted@MiguelPrz请tnx发表评论