public static void Main()
Console.WriteLine($"Points: {points}");
Console.WriteLine($"Amount: {amount}");
var maximumSpend = 50000m;
Console.WriteLine($"MaximumSpend: {maximumSpend}");
var pointsMultiplier = 2m;
Console.WriteLine($"Points Multiplier: {pointsMultiplier}");
var maxPointsPerCustomer = 100000m;
Console.WriteLine($"MaximumSpend: {maxPointsPerCustomer}");
var pointsPerAmount = points / amount;
Console.WriteLine($"Points/Amount: {pointsPerAmount}");
var spendAmount = Math.Min(amount, maximumSpend);
Console.WriteLine($"Spend Amount: {spendAmount}");
var pointsEarned = Math.Min(pointsPerAmount * spendAmount * pointsMultiplier,
Console.WriteLine($"Points Earned: {pointsEarned}");
var result = Floor(pointsEarned, decimals);
Console.WriteLine($"Result: {result}");
private static decimal Floor(decimal value, int decimals)
return Math.Floor(value);
var factor = (decimal)Math.Pow(10, -decimals);
return Floor(value / factor, 0) * factor;