using System.Collections.Generic;
static double RoundBasedOnCustomThreshold(double number, double customThreshold = 0.25)
if (customThreshold <= 0 || customThreshold > 1)
throw new ArgumentException();
return Math.Round(number + 0.5 - customThreshold, 0, MidpointRounding.AwayFromZero);
public static void Main()
Console.WriteLine(RoundBasedOnCustomThreshold(6.75, 0.75));
Console.WriteLine(RoundBasedOnCustomThreshold(6.25, 0.25));
Console.WriteLine(RoundBasedOnCustomThreshold(6.5, 0.5));
Console.WriteLine(RoundBasedOnCustomThreshold(6.5, 1));
Console.WriteLine(RoundBasedOnCustomThreshold(6, 1));
Console.WriteLine(RoundBasedOnCustomThreshold(6, 0.5));
Console.WriteLine(RoundBasedOnCustomThreshold(6, 0.9999));
Console.WriteLine(RoundBasedOnCustomThreshold(5.9999, 0.9999));