我的数据库表格中包含名为"格式"的列。我将在其中放置指定的Sprintf值。
如果我想要科学价值,那么我只需将'%E'
放在列中。但是我可以将这个值与rtrim十进制整数相结合吗?比如,例如我的值是
$number1 = 126;
echo(sprintf('%E', $number1));
我可以使用 rtrim 函数来舍弃E之前的尾随0,而不是获取1.260000E+2
,因此我的值变为1.26E+2
?
如果我的变量是
$number1 = 12666666;
然后我仍然希望它打印1.266667E+7.
你们有一个很好的解决方案吗?
答案 0 :(得分:1)
echo(sprintf('%E', 126)); // 1.260000E+2
echo(preg_replace('/0+E/', 'E', sprintf('%E', 126))); // 1.26E+2
echo(preg_replace('/0+E/', 'E', sprintf('%E', 12666666))); // 1.266667E+7
答案 1 :(得分:1)
您可以计算精度说明符的用法,如下所示:
$numbers = [
-126,
0,
1,
12,
126,
12600000,
12666666
];
foreach ($numbers as $number) {
$precision = min(6, max(0, strlen(trim($number, '-0')) - 1));
printf("%.{$precision}E\n", $number);
}
输出:
-1.26E+2
0E+0
1E+0
1.2E+1
1.26E+2
1.26E+7
1.266667E+7