2014-01-27 4 views
-1

Это:эхо число без научной нотации, в то время как удаление завершающих нулей и десятичной точки

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 - это потому, что я хочу удалить задние нули whe n число имеет менее 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

Я не думаю, что это будет работать, например, 0.00000000000008605900, но ОП не сказал если он * всегда * хотел десятичную нотацию или просто * в этом конкретном случае *. – bishop

+0

Это работает! Я не знаю, почему я иногда так усложняю, спасибо! –

+0

@bishop Мне нужно будет работать только с 8 знаками после запятой, так что это работает отлично. –

Смежные вопросы