Packages
ex_cldr_units
2.3.0
3.20.5
3.20.4
3.20.3
3.20.2
3.20.1
3.20.0
3.19.2
3.19.1
3.19.0
3.18.1
3.18.0
3.17.2
3.17.1
3.17.0
3.16.5
3.16.4
3.16.3
3.16.2
3.16.1
3.16.0
3.15.0
3.14.0
3.13.3
3.13.2
3.13.1
3.13.0
3.12.2
3.12.1
3.12.0
3.11.0
3.10.0
3.9.2
3.9.1
3.9.0
3.8.0
3.8.0-rc.2
3.8.0-rc.1
3.8.0-rc.0
3.7.1
3.7.0
3.6.0
3.5.3
3.5.2
3.5.1
3.5.0
3.5.0-rc.1
3.5.0-rc.0
3.4.0
3.4.0-rc.0
3.3.1
3.3.0
3.3.0-rc.0
3.2.1
3.2.0
3.1.2
3.1.1
3.1.0
3.0.1
3.0.0
3.0.0-rc.0
2.8.1
2.8.0
2.7.0
2.6.1
2.6.0
2.5.3
2.5.2
2.5.1
2.5.0
2.4.0
2.3.3
2.3.2
retired
2.3.1
2.3.0
2.2.0
2.1.0
2.0.0
1.3.0
1.2.2
1.2.1
1.2.0
1.1.1
1.1.0
retired
1.0.1
retired
1.0.0
retired
1.0.0-rc.0
retired
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.1
0.3.0
0.2.1
0.2.0
0.1.3
0.1.2
0.1.1
0.1.0
Unit formatting (volume, area, length, ...), conversion and arithmetic functions based upon the Common Locale Data Repository (CLDR).
Current section
Files
Jump to
Current section
Files
lib/cldr/conversion/function_factors.ex
defmodule Cldr.Unit.Conversion.FunctionFactors do
alias Cldr.Unit.Conversion.FunctionFactors
def factors do
%{
temperature: %{
celsius: 1,
fahrenheit: {
&FunctionFactors.to_fahrenheit/1,
&FunctionFactors.from_fahrenheit/1
},
generic: :not_convertible,
kelvin: {
&FunctionFactors.to_kelvin/1,
&FunctionFactors.from_kelvin/1
}
}
}
end
def to_fahrenheit(x) when is_number(x) do
(x - 32) / 1.8
end
def to_fahrenheit(%Decimal{} = x) do
Decimal.sub(x, Decimal.new(32))
|> Decimal.div(Decimal.new("1.8"))
end
def from_fahrenheit(x) when is_number(x) do
x * 1.8 + 32
end
def from_fahrenheit(%Decimal{} = x) do
Decimal.mult(x, Decimal.new("1.8"))
|> Decimal.add(Decimal.new(32))
end
def to_kelvin(x) when is_number(x) do
x - 273.15
end
def to_kelvin(%Decimal{} = x) do
Decimal.sub(x, Decimal.new("273.15"))
end
def from_kelvin(x) when is_number(x) do
x + 273.15
end
def from_kelvin(%Decimal{} = x) do
Decimal.add(x, Decimal.new("273.15"))
end
end