/// <summary>
        /// Transforms the value of a quantity to a string that can be compared from the left.
        /// Each Digit caries the significance of the original digits more to the right.
        /// </summary>
        public static string ValueAsSearchablestring(this Quantity quantity)
        {
            quantity = quantity.UnPrefixed();
            var leftSearchable = LeftSearchableNumberString(quantity.Value.SignificandText, quantity.Value.Exponent);

            return(leftSearchable);
        }
Example #2
0
        public Quantity Convert(Quantity quantity, Conversion conversion)
        {
            Quantity baseq = quantity.UnPrefixed();
            if (!baseq.Metric.Equals(conversion.To))
                throw new InvalidCastException(string.Format("Quantity {0} cannot be converted to {1}", quantity, conversion.To));

            Quantity output = conversion.Convert(baseq.Value);
            return output;
        }
Example #3
0
 public bool Approximates(Quantity q)
 {
     Quantity a = this.UnPrefixed();
     Quantity b = q.UnPrefixed();
     
     bool met = a.Metric.Equals(b.Metric);
     bool val = a.Value.Approximates(b.Value);
     return met && val;
 }
Example #4
0
        public bool Approximates(Quantity q)
        {
            Quantity a = this.UnPrefixed();
            Quantity b = q.UnPrefixed();

            bool met = a.Metric.Equals(b.Metric);
            bool val = a.Value.Approximates(b.Value);

            return(met && val);
        }
        /// <summary>
        /// Transforms the units and the value of a quantity to a single string that can be compared from the left.
        /// Each Digit caries the significance of the original digits more to the right.
        /// </summary>
        public static string LeftSearchableString(this Quantity quantity)
        {
            quantity = quantity.UnPrefixed();
            var leftSearchable = LeftSearchableNumberString(quantity.Value.SignificandText, quantity.Value.Exponent);

            StringBuilder b = new StringBuilder();

            b.Append(quantity.Metric);
            b.Append(leftSearchable);
            return(b.ToString());
        }
Example #6
0
        public Quantity Convert(Quantity quantity, Conversion conversion)
        {
            Quantity baseq = quantity.UnPrefixed();

            if (!baseq.Metric.Equals(conversion.To))
            {
                throw new InvalidCastException(string.Format("Quantity {0} cannot be converted to {1}", quantity, conversion.To));
            }

            Quantity output = conversion.Convert(baseq.Value);

            return(output);
        }
Example #7
0
        public static Quantity Substract(Quantity a, Quantity b)
        {
            if (!Quantity.SameDimension(a, b))
            {
                throw new ArgumentException("Quantities of a different dimension cannot be added ");
            }

            a = a.UnPrefixed();
            b = b.UnPrefixed();

            Exponential value = Exponential.Substract(a.Value, b.Value);

            return(new Quantity(value, a.Metric));
        }
Example #8
0
        /// <summary>
        /// Transforms the units and the value of a quantity to a single string that can be compared from the left.
        /// Each Digit caries the significance of the original digits more to the right.
        /// </summary>
        public static string LeftSearchableString(this Quantity quantity)
        {
            quantity = quantity.UnPrefixed();
            StringBuilder b = new StringBuilder();

            b.Append(quantity.Metric);
            b.Append("E");
            b.Append(quantity.Value.Exponent.ToString());
            b.Append("x");
            string value = quantity.Value.SignificandText;

            b.Append(LeftSearchableNumberString(value));
            return(b.ToString());
        }
Example #9
0
        /// <summary>
        /// Converts a Quantity to it's canonical form in base units without prefixes
        /// </summary>
        public Quantity Canonical(Quantity quantity)
        {
            Quantity output = Quantity.CopyOf(quantity).UnPrefixed();
            bool     canonicalized;

            do
            {
                canonicalized = canonicalize(ref output);
                output        = output.UnPrefixed();
            }while (canonicalized);

            if (!output.IsInBaseUnits())
            {
                throw new InvalidCastException("Quantity could not be converted to base units");
            }

            output.Metric = output.Metric.Reduced();
            return(output);
        }
Example #10
0
        /// <summary>
        /// Converts a quantity to standardized units without a prefix
        /// </summary>
        public Quantity Canonical(Quantity quantity)
        {
            Quantity outcome = Conversions.Canonical(quantity);

            return(outcome.UnPrefixed());
        }
Example #11
0
        public static Quantity Substract(Quantity a, Quantity b)
        {

            if (!Quantity.SameDimension(a, b))
                throw new ArgumentException("Quantities of a different dimension cannot be added ");

            a = a.UnPrefixed();
            b = b.UnPrefixed();

            Exponential value = Exponential.Substract(a.Value, b.Value);
            return new Quantity(value, a.Metric);
        }