public decimal ToDecimal()
{
if (_Scale > 28) return this.setScale(28).ToDecimal();
var isPos = _BigIntegerNumber >= 0;
uint[] data;
if (isPos){
data = _BigIntegerNumber.data;
} else{
data = (-_BigIntegerNumber).data;
}
if (data[3] != 0) throw new OverflowException("BigDecimal value outside the range of Decimal.");
return new Decimal((int)data[0], (int)data[1], (int)data[2], !isPos, (byte)_Scale);
}