private static unsafe void DecimalToNumber(Decimal value, ref Number.NumberBuffer number) { Decimal d = value; char *buffer = number.digits; number.precision = DecimalPrecision; number.sign = d.IsNegative; char *p = buffer + DecimalPrecision; while (d.Mid != 0 | d.High != 0) { p = Number.UInt32ToDecChars(p, Decimal.DecDivMod1E9(ref d), 9); } p = Number.UInt32ToDecChars(p, d.Low, 0); int i = (int)(buffer + DecimalPrecision - p); number.scale = i - d.Scale; char *dst = number.digits; while (--i >= 0) { *dst++ = *p++; } *dst = '\0'; }