如何使用PHP以自定义格式打印科学记数字?

时间:2017-09-11 08:16:24

标签: php

我有一组科学记数字( x ),如下表中的第1列所示。我正在尝试使用PHP以自定义格式打印数字,如第3列所示。我怎么能这样做?我尝试了printf("%.0e", $x);print sprintf("%.0e", $x);,但得到的结果如第2列所示。

请有人帮我解决问题。

Scientific Notation Number

1 个答案:

答案 0 :(得分:0)

实际上输出是由NCBI BLAST服务器使用CGI脚本生成的。经过多次试验,我找到了解决问题的新方法。但是,我仍然感到惊讶......是否有使用Perl / CGI的解决方案。

<?php
function efmt($Hsp_evalue) {
    $x = (float)sprintf("%.1e", $Hsp_evalue);
    if (preg_match("/e-/i", $x)) {
        $y = explode("E-", $x);
        if ($y[1] < 10) return round($y[0]) . "e-0" . $y[1];
        else return round($y[0]) . "e-" . $y[1];
    } else {
        if (preg_match("/\./", $x)) {
            if ($x * 1000 < 1) return round($x * 10000) . "e-04";
            else return $x;
        } else
            return $x . ".0";
    }
}

print efmt("9.58544"); // Output: 9.6
?>