【问题标题】:US/Imperial units with Java's Units of Measurement API使用 Java 的测量单位 API 的美制/英制单位
【发布时间】:2020-11-21 12:55:09
【问题描述】:

我只在 Java Units of Measurement 标准的 Indriya 2.0.4 reference implementation 中看到公制单位。当然,其他人也想用英尺、英寸和英里来工作,但我找不到任何相关信息。谁能告诉我我在这里缺少什么?

我可以Quantity<Mass> weight = Quantities.getQuantity(1, Units.KILOGRAM);,那么Quantity<Mass> weight = Quantities.getQuantity(1, Units.POUND);在哪里?

【问题讨论】:

标签: java units-of-measurement


【解决方案1】:

对于不只是 SI 单位的测量,您可以使用 Units of Measurement 项目中的一些其他 API(其中包括 indriya API)。

具体来说,CLDRUSCustomary 类可能很有趣。但是,我没有成功组合来自不同类别的单元,例如用于转换(请参阅下面的注释掉的代码)。

一些例子:

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");

以上示例的输出是:

123.45 grams = 4.354570602675702 ounces
123.45 kilometers = 76.70827368169888 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>

【讨论】:

    猜你喜欢
    • 2010-11-08
    • 2019-03-20
    • 1970-01-01
    • 2020-07-25
    • 2017-02-10
    • 2020-01-30
    • 2011-06-21
    • 2011-09-22
    • 1970-01-01
    相关资源
    最近更新 更多