有没有办法让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