没有科学记数法的回声数,同时去除尾随零和小数点

Posted

技术标签:

【中文标题】没有科学记数法的回声数,同时去除尾随零和小数点【英文标题】: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等等……

【问题讨论】:

【参考方案1】:

试试这个

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

【讨论】:

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

以上是关于没有科学记数法的回声数,同时去除尾随零和小数点的主要内容,如果未能解决你的问题,请参考以下文章

BigDecimal 去除尾随零

删除前导零和尾随零并将结果保留到小数点后两位

PHP 科学记数法缩短

我如何修复此代码以使其修剪尾随零和小数点

格式化double,printf中至少有一个小数

Python 任意数字到非科学字符串