Java JSR 363:以分升为单位形成体积单位
设置体积单位的格式以毫升和厘米为单位可以正常工作,但以分升为单位则无法正常工作Java JSR 363:以分升为单位形成体积单位,java,units-of-measurement,jsr363,Java,Units Of Measurement,Jsr363,设置体积单位的格式以毫升和厘米为单位可以正常工作,但以分升为单位则无法正常工作 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 te
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);
}
}
如何将音量单位“分升”的格式设置为显示“分升”?感谢您提醒我们这一点。 显示前缀不会自动传播到
SimpleUnitFormat
中的所有单元
对于随实现提供的开箱即用单元,SimpleUnitFormat应该知道它们。将签出,如果可以解决,请参阅
大多数其他的UnitFormat
实现,例如那些在JavaSE8+实现或扩展模块中找到的实现,都以不同的方式处理这个问题。已知的SimpleUnitFormat
(这就是为什么它被称为“simple”)的一个限制是确保它在运行Java ME Embedded的非常小的系统上以同样的方式工作。如果您的应用程序能够使用java SE 8及以上,或者您没有问题更新java版本,请考虑此。此时,RI必须与ME Embedded向后兼容,因此所有实现的默认UnitFormat
都是SimpleUnitFormat
。召唤
final UnitFormat unitFormat =
ServiceProvider.current().getUnitFormatService().getUnitFormat("EBNF");
在JavaSE实现之上,您将获得EBNFUnitFormat,基于单元测试和缺少问题报告,它应该在那里工作
问候,,
Werner似乎代码通过调用
getUnitFormat(“ASCII”)
工作。似乎缺少DEFAULT.label(MetricPrefix.DECI(升),“dl”)的行代码>在SimpleUnitFormat(1.0.2版)的第963行。看起来像是滑了一下,我们用的是uom se。谢谢你指出。它应该在即将发布的更新包中。计划在复活节期间这样做,所以大约一周后。1.0.3-SNAPSHOT将立即工作,请在那里尝试。
final UnitFormat unitFormat =
ServiceProvider.current().getUnitFormatService().getUnitFormat("EBNF");