public string FormatNumber (int precision, NumberFormatInfo nfi)
{
precision = (precision >= 0 ? precision : nfi.NumberDecimalDigits);
ResetCharBuf (IntegerDigits * 3 + precision);
RoundDecimal (precision);
if (!_positive) {
switch (nfi.NumberNegativePattern) {
case 0:
Append ('(');
break;
case 1:
Append (nfi.NegativeSign);
break;
case 2:
Append (nfi.NegativeSign);
Append (' ');
break;
}
}
AppendIntegerStringWithGroupSeparator (nfi.RawNumberGroupSizes, nfi.NumberGroupSeparator);
if (precision > 0) {
Append (nfi.NumberDecimalSeparator);
AppendDecimalString (precision);
}
if (!_positive) {
switch (nfi.NumberNegativePattern) {
case 0:
Append (')');
break;
case 3:
Append (nfi.NegativeSign);
break;
case 4:
Append (' ');
Append (nfi.NegativeSign);
break;
}
}
return new string (_cbuf, 0, _ind);
}