如何在 PowerShell 中为二维数据集实现查找 table?
How can I implement a lookup table in PowerShell for a 2-dimensional dataset?
我正在编写一个金融应用程序,需要执行一个查找 table(对于显示的利率 table),当给定期限和存款时,returns 利率
如何在 PowerShell 中实现此查找 table?
散列 table 的散列 table 满足我的需要
注意:我使用了有序散列tables,所以如果我选择输出 table 对于用户
class Rates
{
$ratesTable=[ordered]@{}
Rates()
{
$this.ratesTable.add(12,[ordered]@{1000=.02;10000=.021;20000=.022;50000=.023;100000=.024})
$this.ratesTable.add(24,[ordered]@{1000=.03;10000=.031;20000=.032;50000=.033;100000=.034})
$this.ratesTable.add(36,[ordered]@{1000=.04;10000=.041;20000=.042;50000=.043;100000=.044})
$this.ratesTable.add(48,[ordered]@{1000=.05;10000=.051;20000=.052;50000=.053;100000=.054})
$this.ratesTable.add(60,[ordered]@{1000=.06;10000=.061;20000=.062;50000=.063;100000=.064})
}
[double] GetRate([int]$term, [int] $deposit)
{
$relevantMin = 0
$found = $false
$mins = $this.ratesTable.$term
if ($mins)
{
ForEach ($min in $mins.GetEnumerator())
{
if ($deposit -gt $min.Name)
{
$relevantMin = $min.Name
$found = $true
}
else
{
break
}
}
}
if ($found)
{
return [double](($this.ratesTable.$term).$relevantMin)
}
else
{
return [double](-1)
}
}
}
cls
$rate = [Rates]::new()
#example - valid term and deposit
$rate.GetRate(36,32000)
#example - valid term and deposit
$rate.GetRate(12,24000)
#example - valid term and invalid deposit
$rate.GetRate(36,500)
#example - invalid term and valid deposit
$rate.GetRate(72,16000)
#example - valid term and valid deposit
$rate.GetRate(60,10000000)
输出
0.042
0.022
-1
-1
0.064
我正在编写一个金融应用程序,需要执行一个查找 table(对于显示的利率 table),当给定期限和存款时,returns 利率
如何在 PowerShell 中实现此查找 table?
散列 table 的散列 table 满足我的需要
注意:我使用了有序散列tables,所以如果我选择输出 table 对于用户
class Rates
{
$ratesTable=[ordered]@{}
Rates()
{
$this.ratesTable.add(12,[ordered]@{1000=.02;10000=.021;20000=.022;50000=.023;100000=.024})
$this.ratesTable.add(24,[ordered]@{1000=.03;10000=.031;20000=.032;50000=.033;100000=.034})
$this.ratesTable.add(36,[ordered]@{1000=.04;10000=.041;20000=.042;50000=.043;100000=.044})
$this.ratesTable.add(48,[ordered]@{1000=.05;10000=.051;20000=.052;50000=.053;100000=.054})
$this.ratesTable.add(60,[ordered]@{1000=.06;10000=.061;20000=.062;50000=.063;100000=.064})
}
[double] GetRate([int]$term, [int] $deposit)
{
$relevantMin = 0
$found = $false
$mins = $this.ratesTable.$term
if ($mins)
{
ForEach ($min in $mins.GetEnumerator())
{
if ($deposit -gt $min.Name)
{
$relevantMin = $min.Name
$found = $true
}
else
{
break
}
}
}
if ($found)
{
return [double](($this.ratesTable.$term).$relevantMin)
}
else
{
return [double](-1)
}
}
}
cls
$rate = [Rates]::new()
#example - valid term and deposit
$rate.GetRate(36,32000)
#example - valid term and deposit
$rate.GetRate(12,24000)
#example - valid term and invalid deposit
$rate.GetRate(36,500)
#example - invalid term and valid deposit
$rate.GetRate(72,16000)
#example - valid term and valid deposit
$rate.GetRate(60,10000000)
输出
0.042
0.022
-1
-1
0.064