Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ FormatHalf() [2/2]

static unsafe string System.Number.FormatHalf ( ref ValueStringBuilder sb,
Half value,
ReadOnlySpan< char > format,
NumberFormatInfo info )
inlinestaticprivate

Definition at line 1810 of file Number.cs.

1811 {
1812 if (!Half.IsFinite(value))
1813 {
1814 if (Half.IsNaN(value))
1815 {
1816 return info.NaNSymbol;
1817 }
1818 if (!Half.IsNegative(value))
1819 {
1820 return info.PositiveInfinitySymbol;
1821 }
1822 return info.NegativeInfinitySymbol;
1823 }
1824 int digits;
1825 char c = ParseFormatSpecifier(format, out digits);
1826 byte* digits2 = stackalloc byte[21];
1827 if (c == '\0')
1828 {
1829 digits = 5;
1830 }
1831 NumberBuffer number = new NumberBuffer(NumberBufferKind.FloatingPoint, digits2, 21);
1832 number.IsNegative = Half.IsNegative(value);
1833 bool isSignificantDigits;
1834 int nMaxDigits = GetFloatingPointMaxDigitsAndPrecision(c, ref digits, info, out isSignificantDigits);
1835 if (value != default(Half) && (!isSignificantDigits || !Grisu3.TryRunHalf(value, digits, ref number)))
1836 {
1837 Dragon4Half(value, digits, isSignificantDigits, ref number);
1838 }
1839 if (c != 0)
1840 {
1841 if (digits == -1)
1842 {
1843 nMaxDigits = Math.Max(number.DigitsCount, 5);
1844 }
1845 NumberToString(ref sb, ref number, c, nMaxDigits, info);
1846 }
1847 else
1848 {
1849 NumberToStringFormat(ref sb, ref number, format, info);
1850 }
1851 return null;
1852 }
static char ParseFormatSpecifier(ReadOnlySpan< char > format, out int digits)
Definition Number.cs:2657
static unsafe void NumberToStringFormat(ref ValueStringBuilder sb, ref NumberBuffer number, ReadOnlySpan< char > format, NumberFormatInfo info)
Definition Number.cs:2817
static void Dragon4Half(Half value, int cutoffNumber, bool isSignificantDigits, ref NumberBuffer number)
Definition Number.cs:1289
static void NumberToString(ref ValueStringBuilder sb, ref NumberBuffer number, char format, int nMaxDigits, NumberFormatInfo info)
Definition Number.cs:2715
static int GetFloatingPointMaxDigitsAndPrecision(char fmt, ref int precision, NumberFormatInfo info, out bool isSignificantDigits)
Definition Number.cs:1631

References System.Number.NumberBuffer.DigitsCount, System.Number.Dragon4Half(), System.format, System.Number.GetFloatingPointMaxDigitsAndPrecision(), System.info, System.Half.IsFinite(), System.Half.IsNaN(), System.Half.IsNegative(), System.Math.Max(), System.Number.NumberToString(), System.Number.NumberToStringFormat(), System.Number.ParseFormatSpecifier(), System.Number.Grisu3.TryRunHalf(), and System.value.