php - 使用 %03.3f 填充不起作用

标签 php lua printf string-formatting

我有以下函数(在 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 格式返回输出,其中 PQ 或两者都可以为零。

但是我得到了一个简单的输出(与%.2f相同),并且填充部分(%03)似乎没有任何效果。以下是键盘链接( for PHPfor 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/

相关文章:

php - 如何使用 jquery 重新排序列表

php - 如何使用 mysqli_fetch_array 从 MySQL 列中获取数组

php - PDO 测试是否连接

c - sprintf 崩溃,但不清楚原因

c++ - Printf 和 C++ 字符串

python - 意外的格式字符串行为

php - codeigniter中是否可以有类似光标的操作

c++ - 如何从 lua 函数返回两个或多个表?

lua - 在lua中将单个 Sprite 存储在多个表中

lua - Tarantool 应用程序内存限制