5776 {
5777 byte* digits = stackalloc byte[114];
5778 NumberBuffer number = new NumberBuffer(NumberBufferKind.FloatingPoint, digits, 114);
5780 {
5781 ReadOnlySpan<char> span =
value.Trim();
5782 if (span.EqualsOrdinalIgnoreCase(
info.PositiveInfinitySymbol))
5783 {
5784 result = float.PositiveInfinity;
5785 }
5786 else if (span.EqualsOrdinalIgnoreCase(
info.NegativeInfinitySymbol))
5787 {
5788 result = float.NegativeInfinity;
5789 }
5790 else if (span.EqualsOrdinalIgnoreCase(
info.NaNSymbol))
5791 {
5792 result = float.NaN;
5793 }
5795 {
5796 span = span.Slice(
info.PositiveSign.Length);
5797 if (!
info.PositiveInfinitySymbol.StartsWith(
info.PositiveSign,
StringComparison.OrdinalIgnoreCase) && span.EqualsOrdinalIgnoreCase(
info.PositiveInfinitySymbol))
5798 {
5799 result = float.PositiveInfinity;
5800 }
5801 else
5802 {
5804 {
5805 result = 0f;
5806 return false;
5807 }
5808 result = float.NaN;
5809 }
5810 }
5812 {
5813 result = float.NaN;
5814 }
5815 else
5816 {
5818 {
5819 result = 0f;
5820 return false;
5821 }
5822 result = float.NaN;
5823 }
5824 }
5825 else
5826 {
5828 }
5829 return true;
5830 }
static bool SpanStartsWith(ReadOnlySpan< char > span, char c)
static unsafe bool TryStringToNumber(ReadOnlySpan< char > value, NumberStyles styles, ref NumberBuffer number, NumberFormatInfo info)
static float NumberToSingle(ref NumberBuffer number)