如何格式化数字以具有固定的精度和固定的整数位数?
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
我想按照以下规则打印出一个十进制数:
- 小数点左边应该始终有两位数。
- 小数点右边应始终保留三位数字。
下面是一些我希望如何显示数字的示例:
- 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