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

◆ TryParseDouble()

static unsafe bool System.Number.TryParseDouble ( ReadOnlySpan< char > value,
NumberStyles styles,
NumberFormatInfo info,
out double result )
inlinestaticpackage

Definition at line 5665 of file Number.cs.

5666 {
5667 byte* digits = stackalloc byte[769];
5668 NumberBuffer number = new NumberBuffer(NumberBufferKind.FloatingPoint, digits, 769);
5669 if (!TryStringToNumber(value, styles, ref number, info))
5670 {
5671 ReadOnlySpan<char> span = value.Trim();
5672 if (span.EqualsOrdinalIgnoreCase(info.PositiveInfinitySymbol))
5673 {
5674 result = double.PositiveInfinity;
5675 }
5676 else if (span.EqualsOrdinalIgnoreCase(info.NegativeInfinitySymbol))
5677 {
5678 result = double.NegativeInfinity;
5679 }
5680 else if (span.EqualsOrdinalIgnoreCase(info.NaNSymbol))
5681 {
5682 result = double.NaN;
5683 }
5684 else if (span.StartsWith(info.PositiveSign, StringComparison.OrdinalIgnoreCase))
5685 {
5686 span = span.Slice(info.PositiveSign.Length);
5687 if (span.EqualsOrdinalIgnoreCase(info.PositiveInfinitySymbol))
5688 {
5689 result = double.PositiveInfinity;
5690 }
5691 else
5692 {
5693 if (!span.EqualsOrdinalIgnoreCase(info.NaNSymbol))
5694 {
5695 result = 0.0;
5696 return false;
5697 }
5698 result = double.NaN;
5699 }
5700 }
5701 else
5702 {
5703 if ((!span.StartsWith(info.NegativeSign, StringComparison.OrdinalIgnoreCase) || !span.Slice(info.NegativeSign.Length).EqualsOrdinalIgnoreCase(info.NaNSymbol)) && (!info.AllowHyphenDuringParsing || !SpanStartsWith(span, '-') || !span.Slice(1).EqualsOrdinalIgnoreCase(info.NaNSymbol)))
5704 {
5705 result = 0.0;
5706 return false;
5707 }
5708 result = double.NaN;
5709 }
5710 }
5711 else
5712 {
5713 result = NumberToDouble(ref number);
5714 }
5715 return true;
5716 }
static bool SpanStartsWith(ReadOnlySpan< char > span, char c)
Definition Number.cs:5656
static unsafe bool TryStringToNumber(ReadOnlySpan< char > value, NumberStyles styles, ref NumberBuffer number, NumberFormatInfo info)
Definition Number.cs:5832
static double NumberToDouble(ref NumberBuffer number)
Definition Number.cs:5949

References System.info, System.Number.NumberToDouble(), System.ReadOnlySpan< T >.Slice(), System.Number.SpanStartsWith(), System.Number.TryStringToNumber(), and System.value.

Referenced by System.Number.ParseDouble(), and System.Double.TryParse().