private static bool IsInRange(decimal number, Type targetNumberType)
{
if (targetNumberType == typeof(decimal))
{
return true;
}
if (targetNumberType == typeof(float))
{
float f;
return float.TryParse(number.ToString(), out f);
}
if (targetNumberType == typeof(double))
{
double d;
return double.TryParse(number.ToString(), out d);
}
// Must be whole number type
var wholePart = Math.Truncate(number);
if (wholePart != number)
return false;
var ranges = WholeNumberRanges[targetNumberType];
return ranges[0] <= wholePart && wholePart <= ranges[1];
}