【问题标题】:How use sprintf to output a floating point number lesser then 1 without a leading decimal place?如何使用 sprintf 输出小于 1 且没有前导小数位的浮点数?
【发布时间】:2020-02-07 04:41:31
【问题描述】:

我正在尝试使用 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 才能完成的特殊格式?

【问题讨论】:

    标签: php printf


    【解决方案1】:

    不能像使用sprintf()float 的任何选项一样修剪小数点前的零。

    sprintf() fF

    双参数被四舍五入并转换为十进制表示法 样式 [-]ddd.ddd,其中后面的位数 小数点字符等于精度规范。如果 精度缺失,取6;如果精度是 明确为零,不出现小数点字符。如果是小数 点出现时,它之前至少出现一位数字。

    http://www-sbras.nsc.ru/cgi-bin/www/unix_help/man-cgi?sprintf

    作为ltrim() 的替代品,您也许可以使用substr

    substr(sprintf('%.6f', 0.12345678), 1);
    

    【讨论】:

    • 谢谢。我希望得到另一个答案,但我必须接受事实。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多