Intereting Posts

Почему PHP печатает мой номер в научной нотации, когда я указал его как .000021?

В 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 

Определите свой номер как строку, чтобы избежать автоматического каста при использовании в контексте строки (например, эхо)