当我对JScience Amount对象使用toString()时,会得到如下结果:
(7.5 ± 4.4E-16) mph
这并不可怕,但我真的希望它输出类似以下内容的内容:
7.5 miles per hour
是否有捷径可寻?
编辑: 为了明确起见,我希望找到一种解决方案,该解决方案适用于具有任何类型单位(或至少所有预定义单位)的任何金额,而不仅仅是“ mph”。
尽管它会丢弃错误和单位,但是您可以执行以下操作:
Amount<Velocity> x = Amount.valueOf(7.5, NonSI.MILES_PER_HOUR); System.out.println(x); System.out.println( x.doubleValue(NonSI.MILES_PER_HOUR) + " miles per hour");
安慰:
(7.5±4.4E-16)英里/小时 每小时7.5英里
附录: 我希望有一个能以任何单位使用任何数量的解决方案。
您仍然必须提供自己的标签来替换默认标签UnitFormat;标签字符受限制isValidIdentifier()。您也可以AmountFormat按照@RogerLindsjö的建议替换自己的。本示例打印估计值的任意有效位数和标签的有效变体。另请参阅TypeFormat。
UnitFormat
isValidIdentifier()
AmountFormat
TypeFormat
final UnitFormat uf = UnitFormat.getInstance(); uf.label(NonSI.MILES_PER_HOUR, "miles_per_hour"); AmountFormat.setInstance(new AmountFormat() { @Override public Appendable format(Amount<?> m, Appendable a) throws IOException { TypeFormat.format(m.getEstimatedValue(), -1, false, false, a); a.append(" "); return uf.format(m.getUnit(), a); } @Override public Amount<?> parse(CharSequence csq, Cursor c) throws IllegalArgumentException { throw new UnsupportedOperationException("Parsing not supported."); } }); Amount<Velocity> x = Amount.valueOf(7.5, NonSI.MILES_PER_HOUR); System.out.println(x);
7.5英里/小时