如何格式化数字以具有固定的精度和固定的整数位数?

How do I format a number to have a fixed precision AND a fixed number of integral digits?

我想按照以下规则打印出一个十进制数:

下面是一些我希望如何显示数字的示例:

我知道我可以使用模运算来分离整数部分和小数部分,然后分别格式化它们,但这看起来很乱。我希望有一个使用 sprintf 的更简单的解决方案,尽管我似乎无法让它工作。

我已经尝试了以下方法(均无效):

printf('%02.3f', 2.31); // nope
printf('%5.3f', 2.31);  // nadda
printf('%05.5f', 2.31); // no way
printf('%02d', 2.31);   // obviously not
printf('%03f', 2.31);   // not that either

有没有干净的方法来做到这一点?我可以不吃我的蛋糕(前导零)也吃它吗(同时固定小数精度)?

这应该适合你:

echo sprintf("%06.3f", 2.31);

输出:

02.310