PHP中的toPrecision()是否有等价物?

时间:2014-09-26 07:54:46

标签: php math

例如,数字到3个有效数字如下

12345 => 12300
0.12345 => 0.123
0.012345 => 0.0123

4 个答案:

答案 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;
}

或者,请查看下面的链接,看看是否有其他方法可以执行此操作。

PHP.NET PAGE