1760 {
1761 if (!
float.IsFinite(
value))
1762 {
1763 if (
float.IsNaN(
value))
1764 {
1765 return info.NaNSymbol;
1766 }
1767 if (!
float.IsNegative(
value))
1768 {
1769 return info.PositiveInfinitySymbol;
1770 }
1771 return info.NegativeInfinitySymbol;
1772 }
1773 int digits;
1775 byte* digits2 = stackalloc byte[114];
1776 if (c == '\0')
1777 {
1778 digits = 7;
1779 }
1780 NumberBuffer number = new NumberBuffer(NumberBufferKind.FloatingPoint, digits2, 114);
1781 number.IsNegative =
float.IsNegative(
value);
1782 bool isSignificantDigits;
1784 if (
value != 0f && (!isSignificantDigits || !Grisu3.TryRunSingle(
value, digits, ref number)))
1785 {
1787 }
1788 if (c != 0)
1789 {
1790 if (digits == -1)
1791 {
1792 nMaxDigits = Math.Max(number.DigitsCount, 9);
1793 }
1795 }
1796 else
1797 {
1799 }
1800 return null;
1801 }
static char ParseFormatSpecifier(ReadOnlySpan< char > format, out int digits)
static unsafe void NumberToStringFormat(ref ValueStringBuilder sb, ref NumberBuffer number, ReadOnlySpan< char > format, NumberFormatInfo info)
static void Dragon4Single(float value, int cutoffNumber, bool isSignificantDigits, ref NumberBuffer number)
static void NumberToString(ref ValueStringBuilder sb, ref NumberBuffer number, char format, int nMaxDigits, NumberFormatInfo info)
static int GetFloatingPointMaxDigitsAndPrecision(char fmt, ref int precision, NumberFormatInfo info, out bool isSignificantDigits)