格式化体积单位在毫升和厘升中可以正常工作,但在分升中则失败。
import static tec.units.ri.unit.Units.LITRE;
import javax.measure.Unit;
import javax.measure.format.UnitFormat;
import javax.measure.quantity.Volume;
import javax.measure.spi.ServiceProvider;
import static tec.units.ri.unit.MetricPrefix.*;
public class Example {
public static void main(String[] args) {
final UnitFormat unitFormat = ServiceProvider.current().getUnitFormatService().getUnitFormat();
final Unit<Volume> MILLILITRE = MILLI(LITRE);
final Unit<Volume> CENTILITRE = CENTI(LITRE);
final Unit<Volume> DECILITRE = DECI(LITRE);
final String mL = unitFormat.format(MILLILITRE);
final String cL = unitFormat.format(CENTILITRE);
final String dL = unitFormat.format(DECILITRE);
System.out.println(mL);
System.out.println(cL);
System.out.println(dL);
}
}
此代码打印:
ml
cl
㎥/10000.0
如何格式化体积单位“DECILITRE”以显示“dl”?
谢谢让我们注意到这个。https://github.com/unitsofmeasurement/unit-ri/issues/54 https://github.com/unitsofmeasurement/unit-ri/issues/54表明,前缀不会自动传播到所有单元SimpleUnitFormat
.
对于带有实现的开箱即用单元,SimpleUnitFormat 应该知道它们。会检查一下,是否可以解决,请参阅https://github.com/unitsofmeasurement/unit-ri/issues/60 https://github.com/unitsofmeasurement/unit-ri/issues/60.
大多数其他UnitFormat
实施例如在 Java SE 8+ 实现中找到的那些uom-se https://github.com/unitsofmeasurement/uom-se或扩展模块以不同的方式处理这个问题。这是一个已知的限制SimpleUnitFormat
(这就是为什么它被称为“简单”),以确保它在运行 Java ME Embedded 的非常小的系统上以相同的方式工作。如果您的应用程序能够使用 Java SE 8 及更高版本,或者您更新 Java 版本没有问题,请考虑这一点。此时RI必须向后兼容ME Embedded,所以默认UnitFormat
is SimpleUnitFormat
对于所有实现。呼唤
final UnitFormat unitFormat =
ServiceProvider.current().getUnitFormatService().getUnitFormat("EBNF");
在 Java SE 实现之上将为您提供 EBNFUnitFormat,并且基于单元测试和缺乏问题报告,它应该可以在那里工作。
问候,
维尔纳
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)