我有一组科学记数字( x ),如下表中的第1列所示。我正在尝试使用PHP以自定义格式打印数字,如第3列所示。我怎么能这样做?我尝试了printf("%.0e", $x);
和print sprintf("%.0e", $x);
,但得到的结果如第2列所示。
请有人帮我解决问题。
答案 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
?>