private void Init (string format, decimal value)
{
Init (format);
_defPrecision = DecimalDefPrecision;
int[] bits = decimal.GetBits (value);
int scale = (bits [3] & DecimalBitsScaleMask) >> 16;
_positive = bits [3] >= 0;
if (bits [0] == 0 && bits [1] == 0 && bits [2] == 0) {
_decPointPos = -scale;
_positive = true;
_digitsLen = 0;
return;
}
InitDecHexDigits ((uint)bits [2], ((ulong)bits [1] << 32) | (uint)bits [0]);
_digitsLen = DecHexLen ();
_decPointPos = _digitsLen - scale;
if (_precision != -1 || _specifier != 'G') {
_offset = CountTrailingZeros ();
_digitsLen -= _offset;
}
}