static void AddConversionConstant(string fromUnitStr, ExpressionUnits toUnit, double mult, double add = 0, ConversionConstantAttr attr = ConversionConstantAttr.None) { var fromUnit = new ExpressionUnits(fromUnitStr); conversionConstants[fromUnitStr] = new ExpressionUnitsConversion(fromUnit, toUnit, mult, add); List <Tuple <string, double> > addList = null; switch (attr) { case ConversionConstantAttr.SIPrefix: addList = new List <Tuple <string, double> > { Tuple.Create("da", 1e1d), Tuple.Create("h", 1e2d), Tuple.Create("k", 1e3d), Tuple.Create("M", 1e6d), Tuple.Create("G", 1e9d), Tuple.Create("g", 1e9d), Tuple.Create("T", 1e12d), Tuple.Create("t", 1e12d), Tuple.Create("P", 1e15d), Tuple.Create("E", 1e18d), Tuple.Create("e", 1e18d), Tuple.Create("Z", 1e21d), Tuple.Create("Y", 1e24d), Tuple.Create("d", 1e-1d), Tuple.Create("c", 1e-2d), Tuple.Create("m", 1e-3d), Tuple.Create("µ", 1e-6d), Tuple.Create("n", 1e-9d), Tuple.Create("p", 1e-12d), Tuple.Create("f", 1e-15d), Tuple.Create("a", 1e-18d), Tuple.Create("z", 1e-21d), Tuple.Create("y", 1e-24d), }; break; case ConversionConstantAttr.SILongPrefix: addList = new List <Tuple <string, double> > { Tuple.Create("deca", 1e1d), Tuple.Create("hecto", 1e2d), Tuple.Create("kilo", 1e3d), Tuple.Create("mega", 1e6d), Tuple.Create("giga", 1e9d), Tuple.Create("tera", 1e12d), Tuple.Create("peta", 1e15d), Tuple.Create("exa", 1e18d), Tuple.Create("zetta", 1e21d), Tuple.Create("yotta", 1e24d), Tuple.Create("deci", 1e-1d), Tuple.Create("centi", 1e-2d), Tuple.Create("milli", 1e-3d), Tuple.Create("micro", 1e-6d), Tuple.Create("nano", 1e-9d), Tuple.Create("pico", 1e-12d), Tuple.Create("femto", 1e-15d), Tuple.Create("atto", 1e-18d), Tuple.Create("zepto", 1e-21d), Tuple.Create("yocto", 1e-24d), }; break; case ConversionConstantAttr.CPrefix: addList = new List <Tuple <string, double> > { Tuple.Create("K", 1024d), Tuple.Create("k", 1024d), Tuple.Create("M", 1048576d), Tuple.Create("m", 1048576d), Tuple.Create("G", 1073741824d), Tuple.Create("g", 1073741824d), Tuple.Create("T", 1099511627776d), Tuple.Create("t", 1099511627776d), Tuple.Create("P", 1125899906842624d), Tuple.Create("p", 1125899906842624d), Tuple.Create("E", 1152921504606846976d), Tuple.Create("e", 1152921504606846976d), Tuple.Create("Z", 1180591620717411303424d), Tuple.Create("z", 1180591620717411303424d), Tuple.Create("Y", 1208925819614629174706176d), Tuple.Create("y", 1208925819614629174706176d), }; break; case ConversionConstantAttr.CLongPrefix: addList = new List <Tuple <string, double> > { Tuple.Create("kilo", 1024d), Tuple.Create("mega", 1048576d), Tuple.Create("giga", 1073741824d), Tuple.Create("tera", 1099511627776d), Tuple.Create("peta", 1125899906842624d), Tuple.Create("exa", 1152921504606846976d), Tuple.Create("zetta", 1180591620717411303424d), Tuple.Create("yotta", 1208925819614629174706176d), }; break; default: return; } foreach (var tuple in addList) { var newFromUnit = new ExpressionUnits(tuple.Item1 + fromUnitStr); conversionConstants[newFromUnit.Single().Unit] = new ExpressionUnitsConversion(newFromUnit, fromUnit, tuple.Item2, add); } }
static void AddConversionConstant(string fromUnitStr, ExpressionUnits toUnit, double mult, double add = 0, ConversionConstantAttr attr = ConversionConstantAttr.None) { var fromUnit = new ExpressionUnits(fromUnitStr); conversionConstants[fromUnitStr] = new ExpressionUnitsConversion(fromUnit, toUnit, mult, add); List<Tuple<string, double>> addList = null; switch (attr) { case ConversionConstantAttr.SIPrefix: addList = new List<Tuple<string, double>> { Tuple.Create("da", 1e1d), Tuple.Create("h", 1e2d), Tuple.Create("k", 1e3d), Tuple.Create("M", 1e6d), Tuple.Create("G", 1e9d), Tuple.Create("g", 1e9d), Tuple.Create("T", 1e12d), Tuple.Create("t", 1e12d), Tuple.Create("P", 1e15d), Tuple.Create("E", 1e18d), Tuple.Create("e", 1e18d), Tuple.Create("Z", 1e21d), Tuple.Create("Y", 1e24d), Tuple.Create("d", 1e-1d), Tuple.Create("c", 1e-2d), Tuple.Create("m", 1e-3d), Tuple.Create("µ", 1e-6d), Tuple.Create("n", 1e-9d), Tuple.Create("p", 1e-12d), Tuple.Create("f", 1e-15d), Tuple.Create("a", 1e-18d), Tuple.Create("z", 1e-21d), Tuple.Create("y", 1e-24d), }; break; case ConversionConstantAttr.SILongPrefix: addList = new List<Tuple<string, double>> { Tuple.Create("deca", 1e1d), Tuple.Create("hecto", 1e2d), Tuple.Create("kilo", 1e3d), Tuple.Create("mega", 1e6d), Tuple.Create("giga", 1e9d), Tuple.Create("tera", 1e12d), Tuple.Create("peta", 1e15d), Tuple.Create("exa", 1e18d), Tuple.Create("zetta", 1e21d), Tuple.Create("yotta", 1e24d), Tuple.Create("deci", 1e-1d), Tuple.Create("centi", 1e-2d), Tuple.Create("milli", 1e-3d), Tuple.Create("micro", 1e-6d), Tuple.Create("nano", 1e-9d), Tuple.Create("pico", 1e-12d), Tuple.Create("femto", 1e-15d), Tuple.Create("atto", 1e-18d), Tuple.Create("zepto", 1e-21d), Tuple.Create("yocto", 1e-24d), }; break; case ConversionConstantAttr.CPrefix: addList = new List<Tuple<string, double>> { Tuple.Create("K", 1024d), Tuple.Create("k", 1024d), Tuple.Create("M", 1048576d), Tuple.Create("m", 1048576d), Tuple.Create("G", 1073741824d), Tuple.Create("g", 1073741824d), Tuple.Create("T", 1099511627776d), Tuple.Create("t", 1099511627776d), Tuple.Create("P", 1125899906842624d), Tuple.Create("p", 1125899906842624d), Tuple.Create("E", 1152921504606846976d), Tuple.Create("e", 1152921504606846976d), Tuple.Create("Z", 1180591620717411303424d), Tuple.Create("z", 1180591620717411303424d), Tuple.Create("Y", 1208925819614629174706176d), Tuple.Create("y", 1208925819614629174706176d), }; break; case ConversionConstantAttr.CLongPrefix: addList = new List<Tuple<string, double>> { Tuple.Create("kilo", 1024d), Tuple.Create("mega", 1048576d), Tuple.Create("giga", 1073741824d), Tuple.Create("tera", 1099511627776d), Tuple.Create("peta", 1125899906842624d), Tuple.Create("exa", 1152921504606846976d), Tuple.Create("zetta", 1180591620717411303424d), Tuple.Create("yotta", 1208925819614629174706176d), }; break; default: return; } foreach (var tuple in addList) { var newFromUnit = new ExpressionUnits(tuple.Item1 + fromUnitStr); conversionConstants[newFromUnit.Single().Unit] = new ExpressionUnitsConversion(newFromUnit, fromUnit, tuple.Item2, add); } }