/**
         * Returns a string representation of this {@code BigDecimal}. No scientific
         * notation is used. This methods adds zeros where necessary.
         * <p>
         * If this string representation is used to create a new instance, this
         * instance is generally not identical to {@code this} as the precision
         * changes.
         * <p>
         * {@code x.equals(new BigDecimal(x.toPlainString())} usually returns
         * {@code false}.
         * <p>
         * {@code x.compareTo(new BigDecimal(x.toPlainString())} returns {@code 0}.
         *
         * @return a string representation of {@code this} without exponent part.
         */

        public String ToPlainString(IFormatProvider provider)
        {
            if (provider == null)
            {
                provider = CultureInfo.InvariantCulture;
            }

            return(DecimalString.ToPlainString(this, provider));
        }
        public string ToString(IFormatProvider provider)
        {
            if (provider == null)
            {
                provider = NumberFormatInfo.InvariantInfo;
            }

            return(DecimalString.ToString(this, provider));
        }
 /// <summary>
 /// Returns a string representation of this number,
 /// including all significant digits of this value
 /// </summary>
 /// <param name="provider">The provider used to resolve the
 /// format information to use.</param>
 /// <remarks>
 /// <para>
 /// If the scale is negative or if <c>scale - precision >= 6</c>
 /// then engineering notation is used. Engineering notation is
 /// similar to the scientific notation except that the exponent
 /// is made to be a multiple of 3 such that the integer part
 /// is &gt= 1 and &lt 1000.
 /// </para>
 /// </remarks>
 /// <returns>
 /// Returns a string representation of this number in engineering
 /// notation if necessary.
 /// </returns>
 public String ToEngineeringString(IFormatProvider provider)
 {
     return(DecimalString.ToEngineeringString(this, provider));
 }