// Simply converts the failure rate to a MTBF number, without any string formatting public static double FailureRateToMTBF(double failureRate, MTBFUnits units) { failureRate = Math.Max(failureRate, MIN_FAILURE_RATE); double mtbfSeconds = 1.0f / failureRate; switch (units) { case MTBFUnits.SECONDS: return(mtbfSeconds); case MTBFUnits.MINUTES: return(mtbfSeconds / 60); case MTBFUnits.HOURS: return(mtbfSeconds / 60 / 60); case MTBFUnits.DAYS: return(mtbfSeconds / 60 / 60 / 24); case MTBFUnits.YEARS: return(mtbfSeconds / 60 / 60 / 24 / 365); default: return(mtbfSeconds); } }
public static void FailureRateToMTBFString(double failureRate, MTBFUnits units, bool shortForm, int maximum, out string output) { var currentUnit = (int)MTBFUnits.SECONDS; var mtbf = FailureRateToMTBF(failureRate, (MTBFUnits)currentUnit); while (mtbf > maximum) { currentUnit++; mtbf = FailureRateToMTBF(failureRate, (MTBFUnits)currentUnit); if ((MTBFUnits)currentUnit == MTBFUnits.INVALID) { break; } } if (shortForm) { output = string.Format("{0:F2}{1}", mtbf, UnitStringForMTBFUnitShort((MTBFUnits)currentUnit)).ToString(); } else { output = string.Format("{0:F2}{1}", mtbf, UnitStringForMTBFUnit((MTBFUnits)currentUnit)).ToString(); } }
internal static string UnitStringForMTBFUnitShort(MTBFUnits units) { switch (units) { case MTBFUnits.SECONDS: return("s"); case MTBFUnits.MINUTES: return("m"); case MTBFUnits.HOURS: return("h"); case MTBFUnits.DAYS: return("d"); case MTBFUnits.YEARS: return("y"); default: return("-"); } }
internal static string UnitStringForMTBFUnit(MTBFUnits units) { switch (units) { case MTBFUnits.SECONDS: return("seconds"); case MTBFUnits.MINUTES: return("minutes"); case MTBFUnits.HOURS: return("hours"); case MTBFUnits.DAYS: return("days"); case MTBFUnits.YEARS: return("years"); default: return("invalid"); } }