php - 如何使用 sprintf 输出小于 1 且没有前导小数位的浮点数?
问题描述
我正在尝试使用 sprintf 打印一个没有前零的浮点数。数字总是小于 1
0.12345 => .12345
我的尝试:
<?php
$string = sprintf('%0.6F',0.12345678);
我得到“0.123457”,但我需要“.123457”。我可以用 ltrim 做到这一点:
$string = ltrim(sprintf('%0.6F',0.12345678),'0'); //string(7) ".123457"
是否有只能用 sprintf 完成的特殊格式?
解决方案
不可能像使用 and 的任何选项一样修剪小数点前的sprintf()
零float
。
sprintf() fF
double 参数被四舍五入并转换为样式 [-]ddd.ddd 中的十进制表示法,其中小数点字符后的位数等于精度规范。如果精度缺失,则取6;如果精度明确为零,则不会出现小数点字符。如果出现小数点,则在其前面至少出现一位数字。
↳ http://www-sbras.nsc.ru/cgi-bin/www/unix_help/man-cgi?sprintf
作为替代ltrim()
您可以使用substr
:
substr(sprintf('%.6f', 0.12345678), 1);
推荐阅读
- javascript - javascript函数执行失败
- javascript - 函数和 getElementById 在 Javascript 中不起作用
- c++ - 什么时候使用删除运算符很重要?
- r - R中数据框中的回归
- amazon-glacier - AWS Glacier select - 查询清单
- momentjs - 在时区之间转换
- android - 在 Android 中使用 Google 身份验证时如何从 Firebase 身份验证中退出?
- javascript - 为什么我的 emmet 缩写不适用于 VSCode 上的 React?
- java - JUnit5 MockMvc 问题 - 返回空体
- python - 即使使用 WebDriverWait 也会获得 selenium.common.exceptions.TimeoutException