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


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

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

  • 小数点左侧应始终有两位数字。
  • 小数点右侧应始终有三位数字。

因此,以下是我希望如何显示数字的一些示例:

  • 12.345
  • 02.310
  • 07,499
  • 42.300

认识到我可以使用模算术来分隔整数和小数部分,然后分别格式化它们,但这似乎很混乱。我希望有一个使用 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