You're seeing just the function convert_si_prefix, go back to ExKcal.Calc module for more information.
Link to this function

convert_si_prefix(arg, unit_to)


convert_si_prefix(weight() | volume(), atom()) :: weight() | volume()

Converts ExKcal.Units.weight() and ExKcal.Units.volume() type values to target prefix.


Quirkiness of that function is already suggested by its name:

  • it converts from prefix to prefix, not really from unit to unit. This means that only prefix is taken into account during the conversion. Because of that, conversion between volume and weight units will go through (see examples).


iex> import ExKcal.Calc
iex> convert_si_prefix({0.1, :mg}, :dl)
{0.001, :dl}
iex> convert_si_prefix({1002.0, :g}, :kg)
{1.002, :kg}
iex> convert_si_prefix({0.23, :dag}, :mg)
{2.3e3, :mg}