public static DataAggregate.DataTypeCode CommonNumericDenominator(DataAggregate.DataTypeCode x, DataAggregate.DataTypeCode y) { if (DataTypeUtility.IsNumeric(x) && DataTypeUtility.IsNumeric(y)) { if (x == y) { return(x); } if (DataTypeUtility.IsSigned(x) && DataTypeUtility.IsSigned(y)) { if (DataAggregate.DataTypeCode.Int64 != x && DataAggregate.DataTypeCode.Int64 != y) { return(DataAggregate.DataTypeCode.Int32); } return(DataAggregate.DataTypeCode.Int64); } if (DataTypeUtility.IsUnsigned(x) && DataTypeUtility.IsUnsigned(y)) { if (DataAggregate.DataTypeCode.UInt64 != x && DataAggregate.DataTypeCode.UInt64 != y) { return(DataAggregate.DataTypeCode.UInt32); } return(DataAggregate.DataTypeCode.UInt64); } if (DataTypeUtility.IsFloat(x) && DataTypeUtility.IsFloat(y)) { return(DataAggregate.DataTypeCode.Double); } if (DataTypeUtility.IsSigned(x) && DataTypeUtility.IsUnsigned(y)) { return(DataTypeUtility.CommonDataTypeSignedUnsigned(x, y)); } if (DataTypeUtility.IsUnsigned(x) && DataTypeUtility.IsSigned(y)) { return(DataTypeUtility.CommonDataTypeSignedUnsigned(y, x)); } if (DataTypeUtility.Is32BitOrLess(x) && DataTypeUtility.IsFloat(y)) { goto IL_00b6; } if (DataTypeUtility.Is32BitOrLess(y) && DataTypeUtility.IsFloat(x)) { goto IL_00b6; } if (DataTypeUtility.Is64BitOrLess(x) && DataAggregate.DataTypeCode.Decimal == y) { goto IL_00d3; } if (DataTypeUtility.Is64BitOrLess(y) && DataAggregate.DataTypeCode.Decimal == x) { goto IL_00d3; } return(DataAggregate.DataTypeCode.Null); } return(DataAggregate.DataTypeCode.Null); IL_00b6: return(DataAggregate.DataTypeCode.Double); IL_00d3: return(DataAggregate.DataTypeCode.Decimal); }