public static bool operator ==(Quantity arg1, Quantity arg2) { bool isEqual = ((object)arg1) == ((object)arg2); if (!isEqual) { StandardUnit unit1 = ((object)arg1) == null ? new StandardUnit() : arg1.Unit; StandardUnit unit2 = ((object)arg2) == null ? new StandardUnit() : arg2.Unit; if (((object)arg1) != null) { double value1 = arg1.Value; if (((object)arg2) != null) { double value2 = arg2.Value; if (unit1 != null && unit1.HasPrefix()) { value1 *= StandardPrefixes.Multiplier(unit1.Prefix); } if (unit2 != null && unit2.HasPrefix()) { value2 *= StandardPrefixes.Multiplier(unit2.Prefix); } isEqual = value1.Equals(value2); } } } return(isEqual); }
private void InitQuantity(string value, out string remainder) { var number = new StringBuilder(); var unit = new StringBuilder(); string nextWord = Physical.NextWord(value, out remainder).Trim(); if (!double.TryParse(nextWord, out _value)) { foreach (char c in nextWord) { if (Char.IsNumber(c) || c == PLUS[0] || c == MINUS[0] || c == DECIMAL[0]) { number.Append(c); } else { unit.Append(c); } } double.TryParse(number.ToString(), out _value); } else { unit.Append(Physical.NextWord(remainder, out remainder)); } _unit = new StandardUnit(unit.ToString()); _unit.ValueChanged += _unit_ValueChanged; }
public static Quantity operator -(Quantity arg1, Quantity arg2) { StandardUnit unit1 = arg1.Unit; StandardUnit unit2 = arg2.Unit; if (unit1 == null && unit2 != null) { unit1 = unit2.Clone() as StandardUnit; } string prefix1 = unit1 == null ? "" : unit1.Prefix; string prefix2 = unit2 == null ? "" : unit2.Prefix; double value1 = arg1.Value; double value2 = arg2.Value; if (prefix1 != null) { value1 *= StandardPrefixes.Multiplier(prefix1); } if (prefix2 != null) { value2 *= StandardPrefixes.Multiplier(prefix2); } double value = value1 - value2; if (prefix1 != null) { value /= StandardPrefixes.Multiplier(prefix1); } var q = new Quantity(Convert.ToDecimal(value)); if (unit1 != null) { q.Unit = unit1.Clone() as StandardUnit; } return(q); }
public object Clone() { var clone = new StandardUnit(Prefix, Unit); return clone; }
private void InitQuantity(string value, out string remainder) { var number = new StringBuilder(); var unit = new StringBuilder(); string nextWord = Physical.NextWord(value, out remainder).Trim(); if (!double.TryParse(nextWord, out _value)) { foreach (char c in nextWord) { if (Char.IsNumber(c) || c == PLUS[0] || c == MINUS[0] || c == DECIMAL[0]) number.Append(c); else unit.Append(c); } double.TryParse(number.ToString(), out _value); } else { unit.Append(Physical.NextWord(remainder, out remainder)); } _unit = new StandardUnit(unit.ToString()); _unit.ValueChanged += _unit_ValueChanged; }
public object Clone() { var clone = new StandardUnit(Prefix, Unit); return(clone); }