【问题标题】:PHP show float number in stringPHP在字符串中显示浮点数
【发布时间】:2019-01-20 04:42:40
【问题描述】:

我想在 php 字符串中显示一个 float 数字。

类似:

My float number is: 0.00003485

但是当我使用 echo 时,我看到它是这样的:

My float number is: 3.485E-5

另外,我知道我可以使用printf("%.10f",$float) 代码,但我需要在字符串中的很多地方使用它,所以我不能使用printf

我应该在字符串上使用什么代码来显示浮点数?我不想要那个缩短的数字 (3.485E-5)。

【问题讨论】:

  • 请解释一下为什么不能使用printf(),不清楚。

标签: php integer


【解决方案1】:

在某些情况下,我更喜欢将浮点数声明为字符串:

MyFloatNumber = "0.0000000000000000000000003485";

所以,

echo MyFlatNumber; //0.0000000000000000000000003485

【讨论】:

    【解决方案2】:

    我知道我可以使用printf("%.10f",$float) 代码,但是我需要在字符串中的很多地方使用它,所以我不能使用 printf。

    我不得不恭敬地不同意这一点:

    printf('My float number is: %1$.8f (again: %1$.8f; once more: %1$.8f)', 0.00003485);
    

    或者,如果你需要它在一个字符串中:

    $foo = sprintf('My float number is: %1$.8f (again: %1$.8f; once more: %1$.8f)', 0.00003485);
    

    当然,如果您的意思是这违反了项目风格指南或公司政策,那就另当别论了。

    我应该在字符串上使用什么代码来显示浮点数?

    真的吗? PHP 中的浮点数是 64 位 IEEE 754 双精度格式位图。根据这个online converter,号码0.00003485 将是:

    0010010001010111110011100001110100101110111001001111
    

    当然,它们不是实际的 1 和 0,而是不同的电压水平 ;-)

    【讨论】:

      【解决方案3】:

      你可以编写一个函数来以任何你想要的方式处理这个问题。为什么不呢?

      function fval($f, $precision = 9) { 
          return number_format($f, $precision); 
      }
      

      然后任何你需要格式化的地方,把它叫出来:

      $f = 3.485E-5;
      echo fval($f);  // this will print: 0.000003485
      

      【讨论】:

        猜你喜欢
        • 2019-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-30
        • 2010-10-30
        • 1970-01-01
        • 2015-07-18
        • 2016-01-03
        相关资源
        最近更新 更多