gpt4 book ai didi

php - 在 PHP 中将数字格式化为 N 位有效数字

转载 作者:可可西里 更新时间:2023-11-01 12:53:09 25 4
gpt4 key购买 nike

我想格式化(圆形) float ( double )数字,让我们说 2 个有效数字,例如:

1        => 1
11 => 11
111 => 110
119 => 120
0.11 => 0.11
0.00011 => 0.00011
0.000111 => 0.00011

所以任意精度保持不变

我希望它已经内置了一些不错的功能,但目前还没有找到

我被指向了How to round down to the nearest significant figure in php ,这很接近但不适用于 N 位有效数字,我不确定它对 0.000XXX 数字有何作用

最佳答案

要将一个数字四舍五入到 n 个有效数字,您需要找到该数字的大小的 10 次方,然后从 n 中减去它。

这适用于简单的舍入:

function sigFig($value, $digits)
{
if ($value == 0) {
$decimalPlaces = $digits - 1;
} elseif ($value < 0) {
$decimalPlaces = $digits - floor(log10($value * -1)) - 1;
} else {
$decimalPlaces = $digits - floor(log10($value)) - 1;
}

$answer = round($value, $decimalPlaces);
return $answer;
}

这将给出以下内容:
0.0001234567 返回 0.0001235
123456.7 返回 123500

但是,诸如 10 到四位有效数字之类的值应严格表示为 10.00,以表示已知值的精度。

如果这是所需的输出,您可以使用以下命令:

function sigFig($value, $digits)
{
if ($value == 0) {
$decimalPlaces = $digits - 1;
} elseif ($value < 0) {
$decimalPlaces = $digits - floor(log10($value * -1)) - 1;
} else {
$decimalPlaces = $digits - floor(log10($value)) - 1;
}

$answer = ($decimalPlaces > 0) ?
number_format($value, $decimalPlaces) : round($value, $decimalPlaces);
return $answer;
}

现在1显示为1.000

关于php - 在 PHP 中将数字格式化为 N 位有效数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37618679/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com