雖然它摒棄錯誤和單位,你可以做這樣的事情:
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) mph
7.5 miles per hour
附錄:我希望的是,對於任何工程量的解決方案與任何單位。
您仍然需要提供自己的標籤來替換默認的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<Velocity> x = Amount.valueOf(7.5, NonSI.MILES_PER_HOUR);
System.out.println(x);
控制檯:
7.5 miles_per_hour
你試過在org.jscience.physics.amount.AmountFormat設置自己的格式? – 2011-12-15 12:59:36
@Roger我沒有,有沒有一種方法可以以一般的方式來做它我需要的? – sanity 2011-12-15 13:04:54