首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从速度转换为(速度)^-1

从速度转换为(速度)^-1
EN

Stack Overflow用户
提问于 2019-04-13 17:37:27
回答 2查看 199关注 0票数 2

使用javax.measure库,我尝试将km/h换算为min/km。

然而,最小/公里不是unit-ri提出的单位的一部分。

所以我试着创建我自己的单元: MINUTE_BY_KILOMETERS

代码语言:javascript
复制
import javax.measure.Quantity;
import javax.measure.Unit;
import javax.measure.quantity.Length;
import javax.measure.quantity.Speed;

import tec.units.ri.quantity.Quantities;
import tec.units.ri.unit.MetricPrefix;
import tec.units.ri.unit.Units;
代码语言:javascript
复制
    Quantity<Speed> speed = Quantities.getQuantity(10, Units.KILOMETRE_PER_HOUR);
    assertEquals("10 km/h", speed.toString());

    // Conversion m/s
    assertEquals("2.7777800000000004 m/s", speed.to(Units.METRE_PER_SECOND).toString());

    // Conversion min/km
    Unit<Speed> MINUTE_BY_KILOMETERS = Units.MINUTE.divide(MetricPrefix.KILO(Units.METRE)).asType(Speed.class);
    assertEquals("6 min/km", speed.to(MINUTE_BY_KILOMETERS).toString());

但我得到了一个例外:

代码语言:javascript
复制
java.lang.ClassCastException: The unit: min/km is not compatible with quantities of type interface javax.measure.quantity.Speed
    at tec.units.ri.AbstractUnit.asType(AbstractUnit.java:274)

我想我必须创建我自己的Type,但我不知道如何创建。

有没有人能举个例子?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-04-15 15:33:11

我最终发现有一个.inverse函数可以在需要的时候进行转换。

因此,您必须在代码中保留(距离/时间)度量来执行所有操作和转换,并在需要值时在末尾添加一个.inverse():

代码语言:javascript
复制
Unit<Speed> KILOMETERS_BY_MINUTES = MetricPrefix.KILO(Units.METRE).divide(Units.MINUTE).asType(Speed.class);
assertEquals("5.9999952000038395 min/km", speed.to(KILOMETERS_BY_MINUTES).inverse().toString());
票数 1
EN

Stack Overflow用户

发布于 2019-04-13 18:28:26

速度被定义为距离除以时间,因此您不能创建“分钟/公里”的Speed单位。但是,您可以创建自己的反向速度测量,它只不过是一个标记接口:

代码语言:javascript
复制
public interface InverseSpeed extends Quantity<InverseSpeed> {}

然后创建这样一个单元:

代码语言:javascript
复制
Unit<InverseSpeed> MINUTE_BY_KILOMETERS = 
    Units.MINUTE.divide(MetricPrefix.KILO(Units.METRE)).asType(InverseSpeed.class);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55664081

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档