convertEnergy function

double convertEnergy(
  1. Energy from,
  2. Energy to,
  3. double value
)

Convert energy. Some decimals may be lost in the proccess.

from, to and value can NOT be null, otherwise an AssertionError is thrown

Basic usage:

main() {
 final energy = convertEnergy(
   Energy.kilocalorie, // from
   Energy.gramCalorie, // to
   1, // value
 );
 print(energy); // 1000
}

Read the documentation for more information

Implementation

double convertEnergy(Energy from, Energy to, double value) {
  verify(from, to, value);
  if (from == to) return value;
  if (from == Energy.joule) {
    switch (to) {
      case Energy.kilojoule:
        return value / 1000;
      case Energy.gramCalorie:
        return value / 4.184;
      case Energy.kilocalorie:
        return value / 4184;
      case Energy.wattHour:
        return value / 3600;
      case Energy.kilowattHour:
        return value / 3.6e+6;
      case Energy.electronvolt:
        return value / 6.242e+18;
      case Energy.britishThermalUnit:
        return value / 1055;
      case Energy.usTherm:
        return value / 1.055e+8;
      case Energy.foot_pound:
        return value / 1.356;
      default:
        return value;
    }
  } else {
    final joule = Energy.joule;
    switch (from) {
      case Energy.kilojoule:
        return convertEnergy(joule, to, value * 1000);
      case Energy.gramCalorie:
        return convertEnergy(joule, to, value * 4.184);
      case Energy.kilocalorie:
        return convertEnergy(joule, to, value * 4184);
      case Energy.wattHour:
        return convertEnergy(joule, to, value * 3600);
      case Energy.kilowattHour:
        return convertEnergy(joule, to, value * 3.6e+6);
      case Energy.electronvolt:
        return convertEnergy(joule, to, value * 6.242e+18);
      case Energy.britishThermalUnit:
        return convertEnergy(joule, to, value * 1055);
      case Energy.usTherm:
        return convertEnergy(joule, to, value * 1.055e+8);
      case Energy.foot_pound:
        return convertEnergy(joule, to, value * 1.356);
      default:
        return value;
    }
  }
}