Java度量单位转换库?

Nat*_*ate 36 java

我有一个应用程序需要执行多个单位转换(公制为英制,英制为公制).

是否有现成的Java库可以做到这一点?或者我需要自己动手?(我最初的谷歌搜索被证明是无用的.)

dfa*_*dfa 56

有一个特定的JSR 275(javax.measure),JScience作为RI(参考实现).例如,将100英里转换为公里很容易:

UnitConverter toKilometers = MILE.getConverterTo(KILOMETER);
double km = toKilometers.convert(Measure.valueOf(100, MILE).doubleValue(MILE));
Run Code Online (Sandbox Code Playgroud)

(注意单位都是类型安全的编译时,一个杀手级功能imho)

反过来可以很容易:

UnitConverter toMiles1 = KILOMETER.getConverterTo(MILE);
Run Code Online (Sandbox Code Playgroud)

或者超自然:

UnitConverter toMiles2 = toKilometers.inverse();
Run Code Online (Sandbox Code Playgroud)

NB进口:

import javax.measure.Measure;
import javax.measure.converter.UnitConverter;
import javax.measure.quantity.Length;
import static javax.measure.unit.NonSI.*;
import static javax.measure.unit.SI.*;
Run Code Online (Sandbox Code Playgroud)

  • 似乎该请求被批准为JSR-363:https://jcp.org/en/jsr/detail?id = 363.它现在称为计量单位:http://www.unitsofmeasurement.org/.它可以从这里下载:http://code.google.com/p/unitsofmeasure/或者来自http://maven.geotoolkit.org/org/unitsofmeasurement/unit-api/的maven. (11认同)
  • 非常好,但请求被拒绝了,我下载了JScience 5.0,但是找不到类似于此处所示示例中的实现.任何人都可以指出现在如何实现这一目标? (6认同)
  • 它被重新定位到github:https://github.com/unitsofmeasurement (6认同)
  • JSR 275遭到拒绝 (2认同)
  • Gradle依赖`实现'org.jscience:jscience:4.3.1'` (2认同)
  • 在 Android 上,我需要排除此答案中所述的“Javolution”:/sf/answers/1668913011/ `compile ('org.jscience:jscience:4.3.1') { exclude group: 'org. javolution',模块:'javolution' }` (2认同)