Example #1
0
        public static EnergyUnit GetAdjustedUnit(this EnergyUnit originalUnit, ref decimal factor)
        {
            var minimalFactorLog = originalUnit.GetFactorLogForSmallestUnit(factor);

            if (Math.Round(minimalFactorLog) != minimalFactorLog)
            {
                return(originalUnit);
            }
            else
            {
                switch (originalUnit)
                {
                case EnergyUnit.Wh:
                case EnergyUnit.kWh:
                case EnergyUnit.MWh:
                    if (minimalFactorLog < 3)
                    {
                        factor = (decimal)Math.Pow(10, minimalFactorLog);
                        return(EnergyUnit.Wh);
                    }
                    else if (minimalFactorLog < 6)
                    {
                        factor = (decimal)Math.Pow(10, minimalFactorLog - 3);
                        return(EnergyUnit.kWh);
                    }
                    else
                    {
                        factor = (decimal)Math.Pow(10, minimalFactorLog - 6);
                        return(EnergyUnit.MWh);
                    }

                case EnergyUnit.J:
                case EnergyUnit.kJ:
                case EnergyUnit.MJ:
                case EnergyUnit.GJ:
                    if (minimalFactorLog < 3)
                    {
                        factor = (decimal)Math.Pow(10, minimalFactorLog);
                        return(EnergyUnit.J);
                    }
                    else if (minimalFactorLog < 6)
                    {
                        factor = (decimal)Math.Pow(10, minimalFactorLog - 3);
                        return(EnergyUnit.kJ);
                    }
                    else if (minimalFactorLog < 9)
                    {
                        factor = (decimal)Math.Pow(10, minimalFactorLog - 6);
                        return(EnergyUnit.MJ);
                    }
                    else
                    {
                        factor = (decimal)Math.Pow(10, minimalFactorLog - 9);
                        return(EnergyUnit.GJ);
                    }

                default:
                    throw new NotImplementedException("Unknown energy unit : " + originalUnit.ToString());
                }
            }
        }
Example #2
0
 public void SetEnergyUnit(EnergyUnit unit) => Preferences.Set(PreferenceKeys.EnergyUnit, unit.ToString());