В PHP у меня есть следующий код:
<?PHP $var = .000021; echo $var; ?>
выход 2.1E-5!
Зачем? он должен печатать .000021
Используйте number_format (), чтобы получить то, что вам нужно:
print number_format($var, 5);
Также проверьте sprintf ()
2.1E-5 – это то же число, что и 0,000021. Вот как он печатает цифры ниже 0,001. Используйте printf (), если вы хотите его в определенном формате.
Редактировать Если вы не знакомы с синтаксисом 2.1E-5
, вы должны знать, что это сокращение от 2,1 × 10 -5 . Так большинство языков программирования представляют числа в научной нотации.
В общем случае число – это число, а не строка, и это означает, что любой язык программирования рассматривает число как число. Таким образом, число само по себе не подразумевает какого-либо конкретного формата (например, использование .000021
вместо 2.1e-5
). Это не имеет ничего общего с отображением числа с ведущими нулями (например, 0.000021
) или выравниванием списков чисел. Это общая проблема, которую вы найдете на любом языке программирования: если вам нужен конкретный формат, вам нужно указать его, используя функции формата вашего языка программирования.
Если вы не укажете номер как строку и, конечно, переведите его в реальное число. Некоторые языки могут делать это неявно.
Используйте number_format или sprintf, если вы хотите увидеть номер, как вы ожидаете.
echo sprintf('%f', $var); echo number_format($var, 6);
Чтобы показать число до 8 десятичных пробелов, без лишних нулей вправо (как number_format делает, что может раздражать), используйте это:
echo rtrim(rtrim(sprintf('%.8F', $var), '0'), ".");
<?php $var = .000021; echo $var; // 2.1E-5 echo "\n"; $var = '.000021'; echo $var; // .000021
Определите свой номер как строку, чтобы избежать автоматического каста при использовании в контексте строки (например, эхо)