public static void Main()
double yesterdayPromotionRate = 0.01d;
float MinRecoveryPromotionRate = 0.01f;
float MaxPromotionRate = 1.00f;
float MinPromotionRate = 0.00f;
double optimalPromotionRate = MinRecoveryPromotionRate;
var cappedPromotionRate = yesterdayPromotionRate + (optimalPromotionRate - yesterdayPromotionRate) * CapFactor;
Console.WriteLine(cappedPromotionRate);
Console.WriteLine(cappedPromotionRate.GetType().FullName);
bool isEqual = cappedPromotionRate == MinRecoveryPromotionRate;
Console.WriteLine(isEqual);
float result = (float) Math.Max( Math.Min( MaxPromotionRate, cappedPromotionRate) , MinPromotionRate );
Console.WriteLine(result);
isEqual = result == MinRecoveryPromotionRate;
Console.WriteLine(isEqual);
double resultD = Math.Max( Math.Min( MaxPromotionRate, cappedPromotionRate) , MinPromotionRate );
Console.WriteLine(resultD);
isEqual = resultD == MinRecoveryPromotionRate;
Console.WriteLine(isEqual);
double covertedResult = Convert.ToDouble(result );
Console.WriteLine(covertedResult);
isEqual = covertedResult == MinRecoveryPromotionRate;
Console.WriteLine(isEqual);
double castedResult = Convert.ToDouble(result );
Console.WriteLine(castedResult);
isEqual = castedResult == MinRecoveryPromotionRate;
Console.WriteLine(isEqual);
double directConversion = (double) MinRecoveryPromotionRate;
Console.WriteLine(directConversion);
isEqual = directConversion == MinRecoveryPromotionRate;
Console.WriteLine(isEqual);