当我将其指定为.000021时,为什么PHP以科学计数法打印我的数字?

ahm*_*med 34 php syntax formatting numbers

在PHP中,我有以下代码:

<?PHP
  $var = .000021;
  echo $var;
?>
Run Code Online (Sandbox Code Playgroud)

输出为2.1E-5!

为什么?它应该打印.000021

acr*_*man 50

使用number_format()来获得你想要的东西:

print number_format($var, 5);
Run Code Online (Sandbox Code Playgroud)

还要检查sprintf()


Kip*_*Kip 24

2.1E-5 相同的数量0.000021.这就是它打印数字低于0.001的方式.如果您想要特定格式,请使用printf().

编辑如果您不熟悉2.1E-5语法,您应该知道它是2.1×10 -5的简写.这是大多数编程语言用科学记数法表示数字的方式.


Vex*_*Vex 7

如果要按预期查看数字,请使用number_formatsprintf.

echo sprintf('%f', $var);
echo number_format($var, 6);
Run Code Online (Sandbox Code Playgroud)

  • `echo sprintf()` 是一个“反模式”。绝对没有理由让任何人出于任何原因在任何代码中编写“echo sprintf()”——每次都应该是“printf()”。 (2认同)

blu*_*her 7

通常,数字是数字,而不是字符串,这意味着任何编程语言都将数字视为数字.因此,数字本身并不意味着任何特定的格式(比如使用.000021而不是2.1e-5).这与显示带前导零(例如0.000021)的数字或对齐数字列表没什么不同.这是您可以在任何编程语言中找到的一般问题:如果您需要特定格式,则需要使用编程语言的格式函数来指定它.

除非您将数字指定为字符串,并在需要时将其转换为实数.有些语言可以隐式执行此操作.


Joe*_*ich 6

要显示最多8个小数位的数字,而在右边不带多余的零(如number_format那样,可能很烦人),请使用以下命令:

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