没有科学记数法的回声数,同时去除尾随零和小数点
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's
和 if's
是因为我想在数字的小数位数少于 8 位时删除尾随零。
比如1.0000
应该输出1
,1.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 既然我给了你答案,我仍然必须确保你学到了一些东西 :-) 教训是:亲吻(保持简单愚蠢!)。使用单行代码可能会节省一点开销,但是,即使它有效,可读性和可维护性的成本也不值得。以上是关于没有科学记数法的回声数,同时去除尾随零和小数点的主要内容,如果未能解决你的问题,请参考以下文章