格式化音量单位可以在毫升和厘升的情况下正常工作,但无法进行分析。
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
如何格式化音量单位&#34; DECILITRE&#34;显示&#34; dl&#34;?
答案 0 :(得分:0)
感谢您引起我们的注意。
https://github.com/unitsofmeasurement/unit-ri/issues/54
显示,前缀不会自动传播到SimpleUnitFormat
中的所有单位。
对于带有实现的开箱即用单元,SimpleUnitFormat应该知道它们。如果可以解决,请查看https://github.com/unitsofmeasurement/unit-ri/issues/60。
大多数其他UnitFormat
实施例如Java SE 8+实现uom-se或扩展模块中的那些以不同的方式处理这个问题。它是SimpleUnitFormat
的已知限制(这就是为什么它被称为“简单”),以确保它在运行Java ME Embedded的非常小的系统上以相同的方式工作。如果您的应用程序能够使用Java SE 8及更高版本,或者您更新Java版本没有问题,请考虑这一点。此时,RI必须向后兼容ME Embedded,因此对于所有实现,默认UnitFormat
为SimpleUnitFormat
。调用
final UnitFormat unitFormat =
ServiceProvider.current().getUnitFormatService().getUnitFormat("EBNF");
在Java SE实现之上的将为您提供EBNFUnitFormat,并且基于单元测试和缺少问题报告,它应该在那里工作。
此致 沃纳