public override bool Equals(object x) { if (x == null) { return(false); } if (x is Int32) { return(Numerator.ToString().Equals(x.ToString()) && Denominator.Equals(1)); } if (x is UInt32) { return(Numerator.ToString().Equals(x.ToString()) && Denominator.Equals(1)); } if (x is Int64) { return(Numerator.ToString().Equals(x.ToString()) && Denominator.Equals(1)); } if (x is UInt64) { return(Numerator.ToString().Equals(x.ToString()) && Denominator.Equals(1)); } if (x is BigInteger) { return(Numerator.ToString().Equals(x.ToString()) && Denominator.Equals(1)); } if (x is MiniRational) { return(Numerator.Equals(((MiniRational)x).Numerator) && Denominator.Equals(((MiniRational)x).Denominator)); } throw new ApplicationException(); }
/// <summary> /// Serialize to a JSON object /// </summary> public new void SerializeJson(Utf8JsonWriter writer, JsonSerializerOptions options, bool includeStartObject = true) { if (includeStartObject) { writer.WriteStartObject(); } ((fhirCsR4.Models.Element) this).SerializeJson(writer, options, false); if (Numerator != null) { writer.WritePropertyName("numerator"); Numerator.SerializeJson(writer, options); } if (Denominator != null) { writer.WritePropertyName("denominator"); Denominator.SerializeJson(writer, options); } if (includeStartObject) { writer.WriteEndObject(); } }
public override int GetHashCode() { int nhash = Numerator.GetHashCode(); int dhash = Denominator.GetHashCode(); return((nhash + dhash) / dhash); }
// methods public decimal DecimalEquivalent() { decimal deciNumerator = decimal.Parse(Numerator.ToString()); decimal deciDenominator = decimal.Parse(Denominator.ToString()); return(deciNumerator / deciDenominator); }
public Size GetSize() { if (null == Molecule && null == Denominator) { //返回默认分数大小 return(new Size(FontManager.Instance.FontSize, FontManager.Instance.FontSize * 2.4)); } else { double maxWidth = 0; double maxHeight = 0; if (null == Molecule && null != Denominator) { maxWidth = FontManager.Instance.FontSize > Denominator.GetSize().Width ? FontManager.Instance.FontSize : Denominator.GetSize().Width; maxHeight = FontManager.Instance.FontSize * 1.4 + Denominator.GetSize().Height; return(new Size(maxWidth, maxHeight)); } if (null != Molecule && null == Denominator) { maxWidth = FontManager.Instance.FontSize > Molecule.GetSize().Width ? FontManager.Instance.FontSize : Molecule.GetSize().Width; maxHeight = FontManager.Instance.FontSize * 1.4 + Molecule.GetSize().Height; return(new Size(maxWidth, maxHeight)); } var topSize = Molecule.GetSize(); var bottomSize = Denominator.GetSize(); maxWidth = topSize.Width > bottomSize.Width ? topSize.Width : bottomSize.Width; return(new Size(maxWidth, topSize.Height + bottomSize.Height + FontManager.Instance.FontSize * 0.4)); } }
public int CompareTo(Rational other) { var sign = Sign.CompareTo(other.Sign); if (sign != 0) { return(sign); } if ((IsNaN && other.IsNaN) || (IsInfinity && other.IsInfinity)) { return(0); } if (IsNaN || other.IsNaN) { return(Denominator.CompareTo(other.Denominator)); } if (IsPositiveInfinity || other.IsNegativeInfinity) { return(1); } if (IsNegativeInfinity || other.IsPositiveInfinity) { return(-1); } var diff = this - other; return(diff.Sign); }
public IBlock FindNodeById(string id) { if (id == ID) { return(this); } else { if (null != Molecule) { var node = Molecule.FindNodeById(id); if (null != node) { return(node); } } if (null != Denominator) { var deNode = Denominator.FindNodeById(id); if (null != deNode) { return(deNode); } } return(null); } }
public Point GotoNextPart(Point caretLocation) { /*1.当前输入分子;2.当前输入分母*/ bool isInputMolecule = IsContainCaretLocation(Molecule, caretLocation); if (isInputMolecule) { if (null == Denominator) { if (null == Molecule) { return(new Point(this.Location.X, this.Location.Y + FontManager.Instance.FontSize * 1.4)); } else { return(new Point(this.Location.X, this.Location.Y + Molecule.GetSize().Height + FontManager.Instance.FontSize * 0.4)); } } else { var denominatorSize = Denominator.GetSize(); return(new Point(Denominator.Location.X + denominatorSize.Width, Denominator.Location.Y)); } } else { var fractionSize = GetSize(); MessageManager.Instance.OnInputParentChanged(ParentId); return(new Point(Location.X + fractionSize.Width, Location.Y + Molecule.GetSize().Height - FontManager.Instance.FontSize * 0.3)); } }
private Line CreateFractionLine() { Line separateLine = new Line(); separateLine.Uid = ID; separateLine.Stroke = Brushes.Black; separateLine.X1 = Location.X; double maxLineWidth = 0; if (null != Molecule) { separateLine.Y1 = Location.Y + Molecule.GetSize().Height + FontManager.Instance.FontSize * 0.2; maxLineWidth = Molecule.GetSize().Width; separateLine.X2 = Location.X + maxLineWidth; } else { separateLine.Y1 = Location.Y + FontManager.Instance.FontSize * 1.2; separateLine.X2 = Location.X + FontManager.Instance.FontSize; } if (null != Denominator) { var denominatorMaxLineWidth = Denominator.GetSize().Width; if (denominatorMaxLineWidth > maxLineWidth) { separateLine.X2 = Location.X + denominatorMaxLineWidth; } } separateLine.Y2 = separateLine.Y1; _separateLineY = separateLine.Y1; return(separateLine); }
public void SetBlockLocation(double locationX, double alignmentCenterY, double rowY) { double moleculeY = 0; if (null != Molecule) { var maxMoleculeCenter = Molecule.GetVerticalAlignmentCenter(); var locationY = alignmentCenterY - Molecule.GetSize().Height - FontManager.Instance.FontSize * 0.2; Location = new Point(locationX, locationY); Molecule.Location = new Point(locationX, locationY); Molecule.SetBlockLocation(locationX, locationY + maxMoleculeCenter, rowY); moleculeY = locationY; } else { var locationY = alignmentCenterY - FontManager.Instance.FontSize * 1.2; Location = new Point(locationX, locationY); moleculeY = locationY; } if (null != Denominator) { var maxDenominatorCenter = Denominator.GetVerticalAlignmentCenter(); Denominator.Location = new Point(locationX, alignmentCenterY + FontManager.Instance.FontSize * 0.2); Denominator.SetBlockLocation(locationX, Denominator.Location.Y + maxDenominatorCenter, rowY); } }
public override int GetHashCode() { int h1 = Numerator.GetHashCode(); int h2 = Denominator.GetHashCode(); return(((h1 << 5) + h1) ^ h2); }
public override int GetHashCode() { unchecked { return((Numerator.GetHashCode() * 397) ^ Denominator.GetHashCode()); } }
public string ToString(IFormatProvider provider) { if (IsIndeterminate) { return("Indeterminate"); } if (IsPositiveInfinity) { return("PositiveInfinity"); } if (IsNegativeInfinity) { return("NegativeInfinity"); } if (IsZero) { return("0"); } if (IsInteger) { return(Numerator.ToString(provider)); } var sb = new StringBuilder(); sb.Append(Numerator.ToString(provider)); sb.Append('/'); sb.Append(Denominator.ToString(provider)); return(sb.ToString()); }
public override void CascadeStyle(string name, string value) { base.CascadeStyle(name, value); Numerator.CascadeStyle(name, value); Denominator.CascadeStyle(name, value); }
public override bool Equals(object?obj) { return(obj is Number number && Numerator.Equals(number.Numerator) && Denominator.Equals(number.Denominator) && State == number.State); }
/// <summary> /// Validate that this RTO meets minimum conformance criteria /// </summary> public override bool Validate() { return((NullFlavor != null) ^ (Denominator != null || Numerator != null) && ((Numerator != null && Denominator != null && Denominator.Validate() && Numerator.Validate()) || (Numerator == null && Denominator == null)) && UncertainRange == null); }
private void Update(EvaluationContext context) { var n = Numerator.GetValue(context); var d = Denominator.GetValue(context); Result.Value = (d == 0) ? 1 : n / d; }
/// <summary> /// Provides formatted ToString functionality. Format strings can be any of the following, optionally /// appended by a number format string to be used: /// <list type="bullet"> /// <item><term>G</term><description>A General format string, e.g. 1/3, 17/4, -8/3, 5</description></item> /// <item><term>M</term><description>A Mixed Fraction format string, e.g. 1/3, 4 1/4, -2 2/3, 5</description></item> /// <item><term>R</term><description>A Ratio format string, e.g. 1:3, 17:4, -8:3, 5:1</description></item> /// </list> /// </summary> /// <param name="format">The format string to be used, defaults to "G"</param> /// <param name="formatProvider">The formatProvider to use, defaults to the current culture</param> /// <returns>The formatted string</returns> public string ToString(string format, IFormatProvider formatProvider) { if (string.IsNullOrEmpty(format)) { format = "G"; } if (format.Length == 1) { format += "G"; } if (formatProvider == null) { formatProvider = CultureInfo.CurrentCulture; } // Indeterminates if (Denominator == 0) { return(IndeterminateTypeName(Numerator)); } switch (format.Substring(0, 1).ToUpper()) { case "M": // Mixed Fraction return(MixedFractionToString(format.Substring(1), formatProvider)); case "R": // Ratio return(Numerator.ToString(format.Substring(1), formatProvider) + ":" + Denominator.ToString(format.Substring(1), formatProvider)); default: // General 'G' return(GeneralToString(format.Substring(1), formatProvider)); } }
private string MixedFractionToString(string format, IFormatProvider formatProvider) { // Whole Part string mixedFraction = ""; long wholePart = Numerator / Denominator; if (wholePart != 0) { mixedFraction += wholePart.ToString(format, formatProvider) + " "; } // Proper Remainder long remainder = Numerator - (wholePart * Denominator); if (remainder != 0) { if (wholePart != 0) { remainder = Math.Abs(remainder); } mixedFraction += remainder.ToString(format, formatProvider) + "/" + Denominator.ToString(format, formatProvider); } return(mixedFraction.Trim()); }
public Rational Add(Rational val) { BigInteger num = Numerator.Multiply(val.Denominator).Add(Denominator.Multiply(val.Numerator)); BigInteger deno = Denominator.Multiply(val.Denominator); return(new Rational(num, deno)); } /* Rational.add */
public override string ToString() { checked { return(Numerator.ToString() + "/" + Denominator.ToString() + ":" + (Denominator == 0 ? "undef" : ((double)Numerator / (double)Denominator).ToString())); } }
/// <summary> /// Serves as the default hash function. /// </summary> /// <returns>A hash code for the current object.</returns> public override int GetHashCode() { return(base.GetHashCode() ^ Numerator.GetHashCode() ^ Denominator.GetHashCode() ^ ClocksPerClick.GetHashCode() ^ NumberOf32ndNotesPerBeat.GetHashCode()); }
public override int GetHashCode() { var hash = 17; hash = hash * 23 + Numerator.GetHashCode(); hash = hash * 23 + Denominator.GetHashCode(); return(hash); }
public override int GetHashCode() { if (Initialized == false) { throw new Exception(); } return(Denominator.GetHashCode()); }
public override string ToString() { if (Numerator != null && Denominator != null) { return(String.Format("{0}/{1}", Numerator.ToString(), Denominator.ToString())); } return(String.Empty); }
public override int GetHashCode() { var hashCode = -1534900553; hashCode = hashCode * -1521134295 + Numerator.GetHashCode(); hashCode = hashCode * -1521134295 + Denominator.GetHashCode(); return(hashCode); }
private static Denominator CalculateDenominator(double sigma, double t) { Denominator denominator = new Denominator(); denominator.Result.Value = sigma * Math.Sqrt(t); return(denominator); }
public override int GetHashCode() { ReduceImplementation(ref this); int numeratorHash = Numerator.GetHashCode(); int denominatorHash = Denominator.GetHashCode(); return(numeratorHash ^ denominatorHash); }
// Object.ToString public override String ToString() { StringBuilder ret = new StringBuilder(); ret.Append(m_numerator.ToString("R", CultureInfo.InvariantCulture)); ret.Append(c_solidus); ret.Append(Denominator.ToString("R", CultureInfo.InvariantCulture)); return(ret.ToString()); }
private string GeneralToString(string format, IFormatProvider formatProvider) { if (Denominator == 1) { return(Numerator.ToString(format, formatProvider)); } return(Numerator.ToString(format, formatProvider) + "/" + Denominator.ToString(format, formatProvider)); }