问:我正在寻找一种更优雅的方法来从数组中获取数字的最接近匹配项。
我这里的事情可能太复杂了
输入项
## A given array A where to search in
$a = (16/10),(16/9),(4/3),(5/4),(21/10),(21/9)
## A given value B which should be searched for in array A (closest match)
$b = 16/11
所需的输出
"Closest value to 16/11 is 4/3"
我目前的代码可以解决问题
## New array C for the differences of array A - B
$c = $a | %{ [math]::abs($_ - $b) }
## Measure array C to get lowest value D
$d = $c | measure -Minimum
## Get position E of value D in array C
$e = [array]::IndexOf($c, $d.minimum)
## Position E correlates to array A
echo "Closest value to $b is $($a[$e])
备注
1.33333
的小数而不是分数4/3
。输出分数最佳答案
$a = (16/10),(16/9),(4/3),(5/4),(21/10),(21/9)
$b = 16/11
$oldval = $b - $a[0]
$Final = $a[0]
if($oldval -lt 0){$oldval = $oldval * -1}
$a | %{$val = $b - $_
if($val -lt 0 ){$val = $val * -1}
if ($val -lt $oldval){
$oldval = $val
$Final = $_} }
Write-host "$Final is the closest to $b"
关于arrays - 在Powershell数组中查找最接近的数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27421847/