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

Posted

技术标签:

【中文标题】科学计数法到普通十进制输出的转换【英文标题】:scientific notation to normal decimal output conversion 【发布时间】:2019-01-06 14:23:08 【问题描述】:

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

php 中,我想用echo 或类似的东西将数字转换(或正确打印)到页面。

输入的数字可能会这样变化:

100000000

10

0.1

0.0000000001

100000000.0000000001

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

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

1E-11

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

    四舍五入 冗余 0(零)拖尾:例如)0.1 到 0.10000

我只是想打印出那些数字原样

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

我该怎么做?

【问题讨论】:

【参考方案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

这可以满足我的需要。我想要一个更体面的方式来做到这一点,但还没有想出来。

【讨论】:

以上是关于科学计数法到普通十进制输出的转换的主要内容,如果未能解决你的问题,请参考以下文章

在 C++ 中将科学计数法转换为十进制

为啥输出的数字会变成科学计数法?

Java Double类型的科学计数转普通数值的问题

将不同的数字转换为小数 C#(科学记数法到十进制)

将包含科学计数法数字的字符串转换为 PHP 中的普通字符串

在python中将数组的元素从科学计数法转换为十进制计数法