Хотя он отбрасывает ошибки и единицы, вы можете сделать что-то вроде этого:
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()
. Вы также можете заменить свой собственный AmountFormat
, как это предложил @Roger Lindsjö. В этом примере печатается произвольное количество значащих цифр оценочного значения и допустимое изменение вашей метки. См. Также 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? –
@Roger У меня нет, есть ли способ сделать то, что мне нужно, в общем с ним? – sanity
Кажется довольно простым установить статический формат суммы. Например, у javadoc есть пример. См. Http://jscience.org/api/org/jscience/physics/amount/AmountFormat.htmlMybe getExactDigitsInstance - это то, что вам нужно. –