Библиотека преобразования метрической единицы Java?
У меня есть приложение, которое должно будет выполнить ряд единиц преобразования (метрические для Imperial, Imperial к метрике).
Существует ли существующая библиотека Java? Или мне нужно катиться самостоятельно? (Мои первоначальные поисковые запросы Google оказались умеренно бесполезными.)
Ответы
Ответ 1
существует конкретный JSR 275 (javax.measure) с JScience в качестве RI (эталонная реализация). Например, преобразование 100 миль в километры легко:
UnitConverter toKilometers = MILE.getConverterTo(KILOMETER);
double km = toKilometers.convert(Measure.valueOf(100, MILE).doubleValue(MILE));
(обратите внимание, что все единицы являются безопасными по типу времени компиляции, функция killer imho)
Обратное может быть легко:
UnitConverter toMiles1 = KILOMETER.getConverterTo(MILE);
или supereasy как:
UnitConverter toMiles2 = toKilometers.inverse();
Импорт NB:
import javax.measure.Measure;
import javax.measure.converter.UnitConverter;
import javax.measure.quantity.Length;
import static javax.measure.unit.NonSI.*;
import static javax.measure.unit.SI.*;
Ответ 2
Я нашел библиотеку конверсий Java Unit в SourceForge, но я еще не пробовал (в ближайшем будущем мне понадобится такая же функциональность). Он лицензируется как лицензия BSD. Это может помочь.
Ответ 3
Добавление в кучу...
Unidata теперь публикует библиотеку преобразования единиц java из netcdf-java как автономный пакет.
Ответ 4
Я сообщаю Nikolas ответ из другого вопроса.
У вас есть два основных способа:
- Если вы ленивы, попробуйте
javax.measure
library
-
Если вы не ленитесь, напишите свой собственный Converter
класс:
public class Converter {
public static double feetToCm(double feet) {
return feet * 30.48;
}
public static double poundsToKg(double pounds) {
return pounds * 0.45359237;
}
// etc.
}
Использование:
double myPounds = 5.5;
doube myKilos = Converter.poundsToKg(myPounds);