如何让数字不以科学的形式显示出来?

2022-04-10 00:00:00 floating-point-precision php

我要将浮点数数组写入文件

<?php
$x=[0.000455,0.000123,0.00005690330203];
$fname='test.txt';
$str='';
foreach($x as $elem){
$str .= "$elem
";
  }
file_put_contents($fname,$str);
?>

但在test.txt中,我看到

0.000455
0.000123
5.690330203E-5

我不希望浮点数以科学/指数形式显示,我希望它们保持原始形式, 此外,还有像12430120340这样的大整数 因此,如果我对浮点数使用特殊格式,如0.000123293304 那么它可能不适合大整数,也许把它们转换成字符串可能是个好主意?但如何做到呢?


解决方案

可以使用number_format函数设置精度:

示例:

$mynum = 24.2837162893;
$mynum = number_format($mynum, 2);
echo($mynum);

// Outputs 24.28

因此,如果您决定希望所有数字都有10位小数,则只需使用$mynum = number_format($mynum, 10);

另请参阅sprintf()函数了解其他格式选项。

[编辑]

在您的特定示例中,您可以在以下位置使用此函数:

<?php
   $x=[0.000455,0.000123,0.00005690330203];
   $fname='test.txt';
   $str='';
   foreach($x as $elem){
      $str .= number_format($elem, 5) . "
";
   }
   file_put_contents($fname,$str);
?>

正如在另一个答案中所述,浮点值本质上是不精确的。您必须确定在您的用例中,什么精度对您来说是重要的。

引用:http://php.net/manual/en/function.number-format.php

相关文章