Подтвердить что ты не робот

Библиотека преобразования метрической единицы Java?

У меня есть приложение, которое должно будет выполнить ряд единиц преобразования (метрические для Imperial, Imperial к метрике).

Существует ли существующая библиотека Java? Или мне нужно катиться самостоятельно? (Мои первоначальные поисковые запросы Google оказались умеренно бесполезными.)

4b9b3361

Ответ 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);