我有以下函数(在 PHP 中):
function FormatSize( $size ) {
$size = intval( $size );
$idx = 0;
$prefixes = array( "", "Ki", "Mi", "Gi", "Ti", "Pi" );
while( $size > 1024 ) {
$size = $size / 1024;
$idx++;
}
return sprintf( "%03.2f %sB", $size, $prefixes[$idx] );
}
以及lua中的以下内容
function GetSize( iSize )
local iSizeTemp, sPrefix, i = tonumber(iSize) or 0, {"", "Ki", "Mi", "Gi", "Ti", "Pi"}, 1
while iSizeTemp > 1024 do
iSizeTemp, i = iSizeTemp/1024, i+1
end
return string.format( "%03.2f %sB", iSizeTemp, sPrefix[i] )
end
return 语句使用 %03.2f
,它应以 PQR.XY
格式返回输出,其中 P
或 Q
或两者都可以为零。
但是我得到了一个简单的输出(与%.2f
相同),并且填充部分(%03
)似乎没有任何效果。以下是键盘链接( for PHP 和 for Lua )的示例;我将一个数字 1285854482 传递给该函数。输出为 1.20 GiB
,而不是 001.20 GiB
。
最佳答案
您似乎误解了 %.f
格式规范的描述:此 - %03.2f
- 实际上意味着“分配至少 3符号来表示一个数字,至少有 2 个用于表示其非整数部分。请注意,句号不包含在此 2
中 - 但包含在 3
中,因此此格式化程序实际上从未达到其“最小值”。 )
将其更改为 '%06.2f'
,它将按您的预期工作:在 6 个符号中,3 个将用于句号符号,后面是两位数字,因此剩余 3 个用于代表数字的整数部分。
关于php - 使用 %03.3f 填充不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18837374/