【问题标题】:Echo number without scientific notation, while removing trailing zeros and decimal points没有科学记数法的回声数,同时去除尾随零和小数点
【发布时间】:2014-01-27 20:32:43
【问题描述】:

这个:

function output($x) {
    return (float)($x==0 ? '0' : rtrim(($x<0 ? rtrim(sprintf('%.8F', $x), "0") : $x), "."));
}

    echo output(0.00008659);

输出:

8.659E-5

我希望它输出这个:

0.00008659

我之所以使用所有这些 rtrim'sif's 是因为我想在数字的小数位数少于 8 位时删除尾随零。 比如1.0000应该输出11.02000应该输出1.02等等……

【问题讨论】:

    标签: php printf scientific-notation


    【解决方案1】:

    试试这个

    function output($x) {
     $f = sprintf('%0.08f', $x);
     $f = rtrim($f,'0');
     $f = rtrim($f,'.');
     return $f;
    } 
    

    【讨论】:

    • 我不认为这适用于例如 0.00000000000008605900,但 OP 没有说他是否总是想要十进制表示法或只是 在这种特定情况下.
    • 有效!我不知道为什么我有时会这么复杂,谢谢!
    • @bishop 我只需要使用 8 位小数,这样就可以了。
    • @user2536244 既然我给了你答案,我仍然必须确保你学到了一些东西 :-) 教训是:亲吻(保持简单愚蠢!)。使用单行代码可能会节省一点开销,但是,即使它有效,可读性和可维护性的成本也不值得。
    猜你喜欢
    • 2014-09-02
    • 2016-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-26
    • 2014-05-26
    • 2021-02-04
    相关资源
    最近更新 更多