私は、縮尺率を持つmeterIDの価格を計算しようとしています。私はそれがに等しい私は電卓で数量Xの価格を頼む場合紺碧価格電卓からの価格と比較すると、アルゴリズム(パブリック静的ダブルcomputeRatedUsagePerMeter(辞書率、ダブル用法)) https://github.com/PartnerCenterSamples/Commerce-API-DotNet/blob/master/Usage.csAzure Usage Scaled Rates価格
のためのガイドとして、この を使用します私が上記の方法から計算した数量X - 1の価格。
Microsoftから提供された方法が完全であるかどうか、あるいは正しい方向についてのヒントである場合は混乱します。
private static decimal computeRatedUsagePerMeter(Dictionary<decimal, decimal> rates, decimal usage)
{
decimal total = Decimal.Zero;
if (rates.Count == 0)
return Decimal.Zero;
else if (rates.Count == 1)
return (usage * rates.Values.FirstOrDefault());
var remainingUsage = usage;
while (rates.Count > 0)
{
decimal LastKey = rates.Keys.Last();
if (remainingUsage > LastKey)
{
decimal LastKeyValue = Decimal.Zero;
if (rates.TryGetValue(LastKey, out LastKeyValue))
{
total = total + ((remainingUsage - LastKey + 1) * LastKeyValue); // remainingUsage - LastKey +1 because tiered pricing is exclusive
remainingUsage = LastKey - 1;
}
rates.Remove(LastKey);
}
else if (remainingUsage <= LastKey)
{
rates.Remove(LastKey);
}
}
return total;
}
{
"MeterId": "d23a5753-ff85-4ddf-af28-8cc5cf2d3882",
"MeterName": "Standard IO - Page Blob/Disk (GB)",
"MeterCategory": "Storage",
"MeterSubCategory": "Locally Redundant",
"Unit": "GB",
"MeterTags": [],
"MeterRegion": "",
"MeterRates": {
"0": 0.042165,
"1024": 0.0421650,
"51200": 0.0421650,
"512000": 0.0421650,
"1024000": 0.0379485,
"5120000": 0.0312021
},
"EffectiveDate": "2014-02-01T00:00:00Z",
"IncludedQuantity": 0.0
}
アズール価格計算が0.04 (価格はEURである)
を与えながら量1 = 0.084330の価格上記のリンクにより提供される方法によれば、そして別の例:lesは100個の量を言う。
方法:4.258665 EUR
Azureの計算= 4.22 EUR
4.22 EURで丸め99量= 4.216500方法。 も< 1.00が原因の価格の計算は小数点以下を許可していません(そう0,5 GBは完全に合理的な量である。この場合には、そのGBで測定)0.5量を言うことができます料金を確認することはできません。
例を含めることはできますか? –
JSONスニペットは何かを計算することと何が関係していますか?使用したコード、予想される結果、実際に返されたコードを投稿してください。いくつかの*類似のコードへのリンクではありません。 –
これは例であり、私もコードを追加します。コードが同じではありませんが、まったく同じであることがわかります。 – isioutis