美制/英制单位,带Java';s计量单位API

美制/英制单位,带Java';s计量单位API,java,units-of-measurement,Java,Units Of Measurement,我只看到Java度量单位标准中的公制单位。当然,其他人想用脚、英寸和英里来工作,但我找不到任何相关的东西。有人能告诉我我错过了什么吗 我可以做Quantity weight=quanties.getQuantity(1,Units.kg),其中是数量重量=数量.getQuantity(1,Units.POUND)?对于比国际单位制更宽的测量,您可以在项目中使用一些其他API(包括indriyaAPI) 具体来说,CLDR和USCustomary类可能会引起兴趣。但是,我没有成功地将不同类别的单位

我只看到Java度量单位标准中的公制单位。当然,其他人想用脚、英寸和英里来工作,但我找不到任何相关的东西。有人能告诉我我错过了什么吗


我可以做
Quantity weight=quanties.getQuantity(1,Units.kg),其中是
数量重量=数量.getQuantity(1,Units.POUND)

对于比国际单位制更宽的测量,您可以在项目中使用一些其他API(包括
indriya
API)

具体来说,
CLDR
USCustomary
类可能会引起兴趣。但是,我没有成功地将不同类别的单位组合在一起,例如用于转换(参见下面注释掉的代码)

一些例子:

import javax.measure.Quantity;
import javax.measure.quantity.Length;
import javax.measure.quantity.Mass;

import systems.uom.unicode.CLDR;
import systems.uom.common.USCustomary;

import tec.units.ri.quantity.Quantities;
import tec.units.ri.unit.Units;

...

Quantity<Mass> weight1 = Quantities.getQuantity(1, Units.KILOGRAM);
Quantity<Mass> weight2 = Quantities.getQuantity(1, USCustomary.POUND);
        
// javax.measure.IncommensurableException: kg is not compatible with lb
//Double d2 = Units.KILOGRAM.getConverterTo(CLDR.POUND).convert(1);

Quantity<Mass> weight3 = Quantities.getQuantity(123.45, CLDR.GRAM);
Quantity<Mass> weight4 = Quantities.getQuantity(123.45, CLDR.OUNCE);
Quantity<Mass> weight5 = Quantities.getQuantity(123.45, CLDR.OUNCE_TROY);
        
Double ounces = CLDR.GRAM.getConverterTo(CLDR.OUNCE)
        .convert(weight3.getValue()).doubleValue();
System.out.println(weight3.getValue() + " grams = " + ounces + " ounces");
        
Quantity<Length> dist1 = Quantities.getQuantity(123.45, CLDR.KILOMETER);
Double miles = CLDR.KILOMETER.getConverterTo(CLDR.MILE)
        .convert(dist1.getValue()).doubleValue();
System.out.println(dist1.getValue() + " kilometers = " + miles + " miles");
我对此的POM依赖项是:

<dependencies>
    <dependency>
        <groupId>javax.measure</groupId>
        <artifactId>unit-api</artifactId>
        <version>2.0</version>
    </dependency>
    <dependency>
        <groupId>tec.units</groupId>
        <artifactId>unit-ri</artifactId>
        <version>1.0.3</version>
    </dependency>
    <dependency>
        <groupId>systems.uom</groupId>
        <artifactId>systems-unicode</artifactId>
        <version>2.0.2</version>
    </dependency>
    <dependency>
        <groupId>systems.uom</groupId>
        <artifactId>systems-common</artifactId>
        <version>2.0.2</version>
    </dependency>
    <dependency>
        <groupId>systems.uom</groupId>
        <artifactId>systems-quantity</artifactId>
        <version>2.0.2</version>
    </dependency>
</dependencies>

javax.measure
单位api
2
技术单位
单位ri
1.0.3
系统单位
unicode系统
2.0.2
系统单位
通用系统
2.0.2
系统单位
系统数量
2.0.2

对于比国际单位制更宽的测量,您可以在项目中使用一些其他API(包括
indriya
API)

具体来说,
CLDR
USCustomary
类可能会引起兴趣。但是,我没有成功地将不同类别的单位组合在一起,例如用于转换(参见下面注释掉的代码)

一些例子:

import javax.measure.Quantity;
import javax.measure.quantity.Length;
import javax.measure.quantity.Mass;

import systems.uom.unicode.CLDR;
import systems.uom.common.USCustomary;

import tec.units.ri.quantity.Quantities;
import tec.units.ri.unit.Units;

...

Quantity<Mass> weight1 = Quantities.getQuantity(1, Units.KILOGRAM);
Quantity<Mass> weight2 = Quantities.getQuantity(1, USCustomary.POUND);
        
// javax.measure.IncommensurableException: kg is not compatible with lb
//Double d2 = Units.KILOGRAM.getConverterTo(CLDR.POUND).convert(1);

Quantity<Mass> weight3 = Quantities.getQuantity(123.45, CLDR.GRAM);
Quantity<Mass> weight4 = Quantities.getQuantity(123.45, CLDR.OUNCE);
Quantity<Mass> weight5 = Quantities.getQuantity(123.45, CLDR.OUNCE_TROY);
        
Double ounces = CLDR.GRAM.getConverterTo(CLDR.OUNCE)
        .convert(weight3.getValue()).doubleValue();
System.out.println(weight3.getValue() + " grams = " + ounces + " ounces");
        
Quantity<Length> dist1 = Quantities.getQuantity(123.45, CLDR.KILOMETER);
Double miles = CLDR.KILOMETER.getConverterTo(CLDR.MILE)
        .convert(dist1.getValue()).doubleValue();
System.out.println(dist1.getValue() + " kilometers = " + miles + " miles");
我对此的POM依赖项是:

<dependencies>
    <dependency>
        <groupId>javax.measure</groupId>
        <artifactId>unit-api</artifactId>
        <version>2.0</version>
    </dependency>
    <dependency>
        <groupId>tec.units</groupId>
        <artifactId>unit-ri</artifactId>
        <version>1.0.3</version>
    </dependency>
    <dependency>
        <groupId>systems.uom</groupId>
        <artifactId>systems-unicode</artifactId>
        <version>2.0.2</version>
    </dependency>
    <dependency>
        <groupId>systems.uom</groupId>
        <artifactId>systems-common</artifactId>
        <version>2.0.2</version>
    </dependency>
    <dependency>
        <groupId>systems.uom</groupId>
        <artifactId>systems-quantity</artifactId>
        <version>2.0.2</version>
    </dependency>
</dependencies>

javax.measure
单位api
2
技术单位
单位ri
1.0.3
系统单位
unicode系统
2.0.2
系统单位
通用系统
2.0.2
系统单位
系统数量
2.0.2