有没有办法让JScience以更“人性化”的格式输出?

当我使用toString()获取JScience Amount对象时,我得到如下结果:

(7.5 ± 4.4E-16) mph 

这不是很糟糕,但我真的很想输出类似的东西:

 7.5 miles per hour 

是否有捷径可寻?

编辑:只是为了澄清,我希望有一个解决方案适用于任何类型的单位(或至少所有预定义的单位),而不仅仅是“英里/小时”。

虽然它丢弃了错误和单位,但您可以这样做:

 Amount 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()限制。 根据@RogerLindsjö的建议,您也可以替换自己的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 x = Amount.valueOf(7.5, NonSI.MILES_PER_HOUR); System.out.println(x); 

安慰:

 7.5英里_per_hour