1632 {
1633 if (fmt == '\0')
1634 {
1635 isSignificantDigits = true;
1636 return precision;
1637 }
1638 int result = precision;
1639 switch (fmt)
1640 {
1641 case 'C':
1642 case 'c':
1643 if (precision == -1)
1644 {
1645 precision =
info.CurrencyDecimalDigits;
1646 }
1647 isSignificantDigits = false;
1648 break;
1649 case 'E':
1650 case 'e':
1651 if (precision == -1)
1652 {
1653 precision = 6;
1654 }
1655 precision++;
1656 isSignificantDigits = true;
1657 break;
1658 case 'F':
1659 case 'N':
1660 case 'f':
1661 case 'n':
1662 if (precision == -1)
1663 {
1664 precision =
info.NumberDecimalDigits;
1665 }
1666 isSignificantDigits = false;
1667 break;
1668 case 'G':
1669 case 'g':
1670 if (precision == 0)
1671 {
1672 precision = -1;
1673 }
1674 isSignificantDigits = true;
1675 break;
1676 case 'P':
1677 case 'p':
1678 if (precision == -1)
1679 {
1680 precision =
info.PercentDecimalDigits;
1681 }
1682 precision += 2;
1683 isSignificantDigits = false;
1684 break;
1685 case 'R':
1686 case 'r':
1687 precision = -1;
1688 isSignificantDigits = true;
1689 break;
1690 default:
1691 throw new FormatException(SR.Argument_BadFormatSpecifier);
1692 }
1693 return result;
1694 }