例如,数字到3个有效数字如下
12345 => 12300
0.12345 => 0.123
0.012345 => 0.0123
答案 0 :(得分:1)
没有任何内容可以围绕给定数量的有效数字(而不是给定数量的数字)。数学救援!
function toPrecision($number, $precision) {
if ($number == 0) return 0;
$exponent = floor(log10(abs($number)) + 1);
$significand =
round(
($number / pow(10, $exponent))
* pow(10, $precision)
)
/ pow(10, $precision);
return $significand * pow(10, $exponent);
}
$numbers = [
12345,
.12345,
.012345,
];
foreach($numbers as $number) {
echo toPrecision($number, 3), "\n";
}
输出:
12300
0.123
0.0123
答案 1 :(得分:0)
在php中,你可以使用round()函数。它接受两个参数,数量和精度,例如
echo round(12345, -2); # will result in 12300
echo round(0.12345, 3); # will result in 0.123
有关详细信息,请参阅php manual on round()。
答案 2 :(得分:0)
您可以使用几种函数进行数学运算。以下是一些例子
// 0.12345 => 0.123 - round half down
$result = round(0.12345, 3, PHP_ROUND_HALF_DOWN)
// 0.12345 => 0.124 - natural rounding
$result = round(0.12345. 3);
// 12345 => 12300
$result = round(12345, -2, PHP_ROUND_HALF_DOWN);
round()函数按给定精度舍入整数。请尊重自然分类。高于5意味着四舍五入,因为你没有提到PHP_ROUND_HALF_DOWN常量。
答案 3 :(得分:0)
您可以使用number_format()来实现您的需求。
$value = 0.12345;
$output = number_format($value, 3);
echo $output;
这将返回:0.123
或者你可以使用foreach循环包装它,如果你需要通过一个数组,或者创建自己的函数来接受一个整数并返回格式化的值。
function formatNumber($int){
$number = number_format($int, 3);
return $number;
}
或者,请查看下面的链接,看看是否有其他方法可以执行此操作。