internal static unsafe bool TryParseSingle(string value, NumberStyles options, NumberFormatInfo numfmt, out float result) { byte * stackBuffer = stackalloc byte[1 * 0x72]; NumberBuffer number = new NumberBuffer(stackBuffer); result = 0f; double num = 0.0; if (!TryStringToNumber(value, options, ref number, numfmt, false)) { return(false); } if (!NumberBufferToDouble(number.PackForNative(), ref num)) { return(false); } float f = (float)num; if (float.IsInfinity(f)) { return(false); } result = f; return(true); }
internal static unsafe double ParseDouble(string value, NumberStyles options, NumberFormatInfo numfmt) { if (value == null) { throw new ArgumentNullException("value"); } byte * stackBuffer = stackalloc byte[0x72]; NumberBuffer number = new NumberBuffer(stackBuffer); double num = 0.0; if (!TryStringToNumber(value, options, ref number, numfmt, false)) { string str = value.Trim(); if (str.Equals(numfmt.PositiveInfinitySymbol)) { return(double.PositiveInfinity); } if (str.Equals(numfmt.NegativeInfinitySymbol)) { return(double.NegativeInfinity); } if (!str.Equals(numfmt.NaNSymbol)) { throw new FormatException(Environment.GetResourceString("Format_InvalidString")); } return(double.NaN); } if (!NumberBufferToDouble(number.PackForNative(), ref num)) { throw new OverflowException(Environment.GetResourceString("Overflow_Double")); } return(num); }
internal static unsafe double ParseDouble(string value, NumberStyles options, NumberFormatInfo numfmt) { byte * stackBuffer = stackalloc byte[1 * 0x72]; NumberBuffer number = new NumberBuffer(stackBuffer); double num = 0.0; StringToNumber(value, options, ref number, numfmt, false); if (!NumberBufferToDouble(number.PackForNative(), ref num)) { throw new OverflowException(Environment.GetResourceString("Overflow_Double")); } return(num); }
internal static unsafe decimal ParseDecimal(string value, NumberStyles options, NumberFormatInfo numfmt) { byte * stackBuffer = stackalloc byte[0x72]; NumberBuffer number = new NumberBuffer(stackBuffer); decimal num = 0M; StringToNumber(value, options, ref number, numfmt, true); if (!NumberBufferToDecimal(number.PackForNative(), ref num)) { throw new OverflowException(Environment.GetResourceString("Overflow_Decimal")); } return(num); }
internal static unsafe bool TryParseDouble(string value, NumberStyles options, NumberFormatInfo numfmt, out double result) { byte * stackBuffer = stackalloc byte[1 * 0x72]; NumberBuffer number = new NumberBuffer(stackBuffer); result = 0.0; if (!TryStringToNumber(value, options, ref number, numfmt, false)) { return(false); } if (!NumberBufferToDouble(number.PackForNative(), ref result)) { return(false); } return(true); }