科学计数法到普通十进制输出转换
scientific notation to normal decimal output conversion
首先,我试了很多次都没有找到完全相同的问题。有类似的解决方案和看起来不错但不适合我的解决方案。
在 PHP 中,我想用 echo
或类似的东西将数字转换(或正确打印)到分页。
输入的数字可能会有所不同:
100000000
10
0.1
0.0000000001
100000000.0000000001
它们是从 MySQL 数据库中检索的。字段格式为double
但是,当我尝试 echo
那些数字时,小十进制数用科学记数法打印出来
1E-11
我发现了 sprintf
、number_format
、stringfication
、make (double
) 或 (string
) 等。但他们有一些如下不需要的功能:
- 舍入数
- 冗余 0(零)拖尾:例如)0.1 到 0.10000
我只想打印出那些数字原样
并且没有多余的进程。
(比如通过 number_format 转换为十进制格式,然后将其设为字符串,然后删除零尾)
我怎样才能做到?
我自己找到了一种方法,我发布了一个快速答案。
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
}
这正是我所需要的。我想要一个更体面的方式来做到这一点,但还没有想出。
首先,我试了很多次都没有找到完全相同的问题。有类似的解决方案和看起来不错但不适合我的解决方案。
在 PHP 中,我想用 echo
或类似的东西将数字转换(或正确打印)到分页。
输入的数字可能会有所不同:
100000000
10
0.1
0.0000000001
100000000.0000000001
它们是从 MySQL 数据库中检索的。字段格式为double
但是,当我尝试 echo
那些数字时,小十进制数用科学记数法打印出来
1E-11
我发现了 sprintf
、number_format
、stringfication
、make (double
) 或 (string
) 等。但他们有一些如下不需要的功能:
- 舍入数
- 冗余 0(零)拖尾:例如)0.1 到 0.10000
我只想打印出那些数字原样
并且没有多余的进程。 (比如通过 number_format 转换为十进制格式,然后将其设为字符串,然后删除零尾)
我怎样才能做到?
我自己找到了一种方法,我发布了一个快速答案。
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
}
这正是我所需要的。我想要一个更体面的方式来做到这一点,但还没有想出。