普通十进制输出转换的科学计数法

时间:2019-01-06 14:23:09

标签: php number-formatting

首先,我做了很多尝试来找到完全相同的问题,但是失败了。有类似的解决方案和解决方案看起来不错,但对我来说不适合。

在PHP中,我想使用echo或类似的方式将数字转换(或正确打印)到页面。

输入数字可能会有所不同:

  

100000000

     

10

     

0.1

     

0.0000000001

     

100000000.0000000001

它们是从MySQL数据库检索的。字段格式为double

但是,当我尝试echo这些数字时,小十进制数字会以科学计数法打印出来

  

1E-11

我发现了sprintfnumber_formatstringfication,make(double或(string)等。但是它们有一些不需要的功能如下所示:

  1. 四舍五入数字
  2. 多余的0(零)拖尾:例如0.1到0.10000

我只想按原样打印出这些数字

,并且没有多余的过程。 (例如先将number_format转换为十进制格式,然后将其设置为字符串,然后删除零尾数)

我该怎么做?

1 个答案:

答案 0 :(得分:1)

我找到了一种自己做的方法,我正在发布一个快速答案。

function realval($v) {
    $f = (string)number_format($v, 10, '.', ''); // 10000.0000010000
    if(strpos($f, '.') !== false) { // if it's a decimal (if not, print as is)
        $f = rtrim($f, "0"); // 10000.000001
        $f = rtrim($f, "."); // to prevent 10000. like things. 
    }
    return $f; // string format
}

这可以满足我的需求。我想要一种更体面的方法,但是还没有弄清楚。