/// <summary> /// Parses the specified format. /// </summary> /// <param name="s">The string.</param> /// <returns>Returns the value.</returns> public override object Parse(string s) { if ((s == null) || (s == string.Empty)) { return(null); } s = NumberHelper.FixJapaneseChars(s); bool flag = false; int index = s.IndexOf("-"); if ((index > 0) && !DefaultTokens.IsEquals(s[index - 1], DefaultTokens.ExponentialSymbol, true)) { flag = true; } List <string> list = new List <string>(new string[] { "/", ":", "." }); list.Remove(CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator); bool flag2 = false; if (flag) { flag2 = true; } if (!flag2) { foreach (string str in list) { if (s.Contains(str)) { flag2 = true; break; } } } if (flag2) { DateTime time; if (DateTime.TryParseExact(s, GeneralMonthDay, null, (DateTimeStyles)DateTimeStyles.AllowWhiteSpaces, out time)) { return(time); } if (DateTime.TryParseExact(s, generalYearMonth, null, (DateTimeStyles)DateTimeStyles.AllowWhiteSpaces, out time)) { return(time); } if (DateTime.TryParseExact(s, GeneralYearMonthDay, null, (DateTimeStyles)DateTimeStyles.AllowWhiteSpaces, out time)) { return(time); } if (DateTime.TryParseExact(s, AlternativeYearMonthDay, null, (DateTimeStyles)DateTimeStyles.AllowWhiteSpaces, out time)) { return(time); } if (DateTime.TryParseExact(s, generalHourMinute, null, ((DateTimeStyles)DateTimeStyles.NoCurrentDateDefault) | ((DateTimeStyles)DateTimeStyles.AllowWhiteSpaces), out time)) { if (((time.Year == 1) && (time.Month == 1)) && (time.Day == 1)) { return(new TimeSpan(0, time.Hour, time.Minute, time.Second, time.Millisecond)); } return(time); } if (DateTime.TryParseExact(s, generalHourMinuteSecond, null, ((DateTimeStyles)DateTimeStyles.NoCurrentDateDefault) | ((DateTimeStyles)DateTimeStyles.AllowWhiteSpaces), out time)) { if (((time.Year == 1) && (time.Month == 1)) && (time.Day == 1)) { return(new TimeSpan(0, time.Hour, time.Minute, time.Second, time.Millisecond)); } return(time); } if (DateTime.TryParseExact(s, generalHourMinuteSecondSubSecond, null, ((DateTimeStyles)DateTimeStyles.NoCurrentDateDefault) | ((DateTimeStyles)DateTimeStyles.AllowWhiteSpaces), out time)) { if (((time.Year == 1) && (time.Month == 1)) && (time.Day == 1)) { return(new TimeSpan(0, time.Hour, time.Minute, time.Second, time.Millisecond)); } return(time); } if (DateTime.TryParseExact(s, GeneralHourMinuteWithDate, null, (DateTimeStyles)DateTimeStyles.AllowWhiteSpaces, out time)) { return(time); } if (DateTime.TryParseExact(s, GeneralHourMinuteSecondWithDate, null, (DateTimeStyles)DateTimeStyles.AllowWhiteSpaces, out time)) { return(time); } if (DateTime.TryParseExact(s, GeneralHourMinuteSecondSubSecondWithDate, null, (DateTimeStyles)DateTimeStyles.AllowWhiteSpaces, out time)) { return(time); } } string str2 = s; bool? nullable = null; if (str2.Substring(0, 1) == DefaultTokens.NegativeSign) { nullable = true; } else if (str2.Substring(0, 1) == DefaultTokens.PositiveSign) { nullable = false; } bool flag3 = false; if ((nullable.HasValue && (str2.Length > 3)) && ((str2[1] == DefaultTokens.LeftParenthesis) && (str2[str2.Length - 1] == DefaultTokens.RightParenthesis))) { flag3 = true; } if (nullable.HasValue && flag3) { string str3 = s.Remove(0, 1); object obj2 = this.DigitalFormat.Parse(str3); if (obj2 == null) { return(s); } if (obj2 is double) { if (nullable.Value) { return((double)-Math.Abs((double)((double)obj2))); } return((double)Math.Abs((double)((double)obj2))); } if (!(obj2 is int)) { return(obj2); } if (nullable.Value) { return((int)-Math.Abs((int)((int)obj2))); } return((int)Math.Abs((int)((int)obj2))); } object obj3 = this.DigitalFormat.Parse(s); if (obj3 != null) { return(obj3); } return(s); }
/// <summary> /// Gets the fraction. /// </summary> /// <param name="value">The value.</param> /// <param name="denominatorDigits">The denominator digits.</param> /// <param name="integer">The integer.</param> /// <param name="numerator">The numerator.</param> /// <param name="denominator">The denominator.</param> /// <returns>Returns the fraction.</returns> public static bool GetFraction(double value, int denominatorDigits, out double integer, out double numerator, out double denominator) { return(NumberHelper.GetFraction(value, denominatorDigits, out integer, out numerator, out denominator)); }