Java公制单位转换库?

Java公制单位转换库?,java,Java,我有一个应用程序需要执行许多单位转换(公制到英制,英制到公制) 是否有一个现有的Java库可以做到这一点?还是我需要自己滚?(我最初的谷歌搜索被证明有点无用。)有一个具体的(javax.measure)和as RI(参考实现)。例如,将100英里转换为公里很容易: UnitConverter toKilometers = MILE.getConverterTo(KILOMETER); double km = toKilometers.convert(Measure.valueOf(100, MI

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

是否有一个现有的Java库可以做到这一点?还是我需要自己滚?(我最初的谷歌搜索被证明有点无用。)

有一个具体的(javax.measure)和as RI(参考实现)。例如,将100英里转换为公里很容易:

UnitConverter toKilometers = MILE.getConverterTo(KILOMETER);
double km = toKilometers.convert(Measure.valueOf(100, MILE).doubleValue(MILE));
(请注意,单元在编译时都是类型安全的,这是一个杀手级功能imho)

反之亦然:

UnitConverter toMiles1 = KILOMETER.getConverterTo(MILE);
或超级简单,如:

UnitConverter toMiles2 = toKilometers.inverse();
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.*;
我已经在SourceForge找到了,但我还没有尝试过(在不久的将来,我将需要类似的函数性)。它被许可为BSD许可证。这可能会有帮助。

添加到堆中

Unidata现在将java单位转换库从发布为。

我们为java、JavaScript和C创建了一个库,以便轻松执行这些度量转换。有超过20个完整的度量单位,转换只需一行即可完成

//One liner
double x = new UnitOf.Mass().fromPounds(5).toKilograms(); //2.26796 returned as 5 pounds is 2.26796 kilograms

//Or as a variable
UnitOf.Length feet = new UnitOf.Length().fromFeet(5.5); //Instantiate UnitOf.Length and set "feet" as 5.5
double foo = feet.toInches(); //66 returned as 5.5 feet is 66 inches
double bar = feet.toMeters(); //1.6764 returned as 5.5 feet is 1.6764 meters

UnitOf还提供了解析数据类型、转换分数和转换分数的功能,甚至可以创建自己的自定义度量单位。

非常好,但请求被拒绝,我下载了JScience 5.0,找不到与此处示例中类似的实现。有谁能指出现在如何实现这一点吗?似乎该请求已被批准为JSR-363:。它现在称为度量单位:。它可以从这里下载:也可以用maven从下载。它被重新定位到github:Gradle dependency
实现'org.jscience:jscience:4.3.1'
在Android上,我需要排除
Javolution
,正如这个答案中所指出的:
编译('org.jscience:jscience:4.3.1'){排除组:'org.Javolution',模块:'Javolution}
但很抱歉,它似乎已经死了很长一段时间,而且没有文档。。。我没看就回答得太快了。你们现在可以看看这个了,它支持米,英里的长度,公斤,磅的质量。它支持添加并执行隐式类型转换。它是静态类型的,因此转换错误在编译时可见:)我将添加更多功能:)