private static string ToStringUsDigitsFormattingInternal <T>( T number, DigitsFormatting digitsFormattingSettings = DigitsFormatting.None, int precision = 2) where T : struct, IComparable, IComparable <T>, IConvertible, IEquatable <T>, IFormattable { var currentNoCommaFormatSpecifier = string.Concat("0.", new string('0', precision)); var currentComaFormatSpecifier = string.Concat("##,0.", new string('0', precision)); var formattedDigits = digitsFormattingSettings.HasFlag( DigitsFormatting.NoComma) ? number.ToString(currentNoCommaFormatSpecifier, _usCultureInfo) : number.ToString(currentComaFormatSpecifier, _usCultureInfo); if (digitsFormattingSettings.HasFlag(DigitsFormatting.PrefixDollar)) { formattedDigits = string.Concat("$", formattedDigits); } if (digitsFormattingSettings.HasFlag(DigitsFormatting.PrefixMinus)) { formattedDigits = string.Concat("-", formattedDigits); } if (digitsFormattingSettings.HasFlag(DigitsFormatting.SufixDollar)) { formattedDigits = string.Concat(formattedDigits, "$"); } return(formattedDigits); }
/// <summary> /// It is used to format decimal digits to specific US culture string. You can control the formatting options through /// DigitsFormattingSettings enum. /// You can set multiple values: ToStringUsDigitsFormatting.PrefixDollar | PrefixDollar.PrefixMinus | SuffixDollar in /// single method call. /// Also, you can control the precision of your number through the precision parameter. By default it is set to 2. /// </summary> /// <param name="digitsFormattingSettings">The digits formatting settings.</param> /// <param name="number">The number.</param> /// <param name="precision">The precision.</param> /// <returns>The formatted number's string.</returns> public static string ToStringUsDigitsFormatting( this decimal number, DigitsFormatting digitsFormattingSettings = DigitsFormatting.None, int precision = 2) { var result = ToStringUsDigitsFormattingInternal(number, digitsFormattingSettings, precision); return(result); }