Подтвердить что ты не робот

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

В PHP у меня есть следующий код:

<?PHP
  $var = .000021;
  echo $var;
?>

выход равен 2.1E-5!

Почему? он должен печатать .000021

4b9b3361

Ответ 1

Используйте number_format(), чтобы получить то, что вам нужно:

print number_format($var, 5);

Также проверьте sprintf()

Ответ 2

2.1E-5 - это то же число, что и 0,000021. То, как печатает цифры ниже 0,001. Используйте printf(), если вы хотите его в определенном формате.

Изменить Если вы не знакомы с синтаксисом 2.1E-5, вы должны знать, что это сокращенная версия 2.1 × 10 -5. Именно так большинство языков программирования представляют числа в научной нотации.

Ответ 3

В общем случае число - это число, а не строка, и это означает, что любой язык программирования рассматривает число как число. Таким образом, число само по себе не подразумевает какого-либо конкретного формата (например, используя .000021 вместо 2.1e-5). Это не имеет ничего общего с отображением числа с ведущими нулями (например, 0.000021) или выравниванием списков чисел. Это общая проблема, которую вы найдете на любом языке программирования: если вам нужен конкретный формат, который вам нужно указать, используя функции формата вашего языка программирования.

Если вы не укажете номер как строку и, конечно, переведите его в реальное число. Некоторые языки могут делать это неявно.

Ответ 4

Используйте number_format или sprintf, если вы хотите увидеть номер, как вы ожидаете.

echo sprintf('%f', $var);
echo number_format($var, 6);

Ответ 5

Чтобы показать число до 8 десятичных пробелов, без лишних нулей вправо (поскольку number_format делает, что может раздражать), используйте это:

echo rtrim(rtrim(sprintf('%.8F', $var), '0'), ".");

Ответ 6

<?php
$var = .000021;
echo $var; // 2.1E-5
echo "\n";
$var = '.000021';
echo $var; // .000021

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