2009-07-28 13 views
32

Tengo una aplicación que deberá realizar una cantidad de conversiones de unidad (métrica a Imperial, Imperial a métrica).Biblioteca de conversión de unidades métricas de Java?

¿Existe una biblioteca Java existente que hace esto? ¿O tendré que hacer el mío? (Mis búsquedas iniciales de Google resultaron moderadamente inútiles.)

+3

Puede echar un vistazo a este https://github.com/mbe24/sius ya que admite medidor, milla de longitud y kilogramo, libra de masa. Es compatible con la adición y lo hace * implícita * tipo de conversión. Está tipado estáticamente, por lo que los errores de conversión son visibiles en el momento de la compilación :) Añadiré más características :) – mike

Respuesta

46

hay un JSR 275 específico (javax.measure) con JScience como RI (Implementación de referencia). Por ejemplo la conversión de 100 millas a kilómetros es fácil como:

UnitConverter toKilometers = MILE.getConverterTo(KILOMETER); 
double km = toKilometers.convert(Measure.valueOf(100, MILE).doubleValue(MILE)); 

(tenga en cuenta que las unidades son seguros todo tipo a-tiempo de compilación, un imho característica asesino)

El reverso puede ser fácil:

UnitConverter toMiles1 = KILOMETER.getConverterTo(MILE); 

o SuperEasy como:

UnitConverter toMiles2 = toKilometers.inverse(); 

importaciones 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.*; 
+1

Gracias por esto; Nunca había oído hablar de esto, pero será extremadamente útil en mi trabajo. – I82Much

+6

Muy bien, pero la solicitud fue rechazada y descargué JScience 5.0 y no pude encontrar una implementación como la del ejemplo que se muestra aquí. ¿Alguien puede señalar cómo se puede lograr esto ahora? – CCC

+2

JSR 275 fue rechazado – Nate

0

He encontrado Java Unit Conversion library en SourceForge, pero aún no lo he probado (necesitaré una funcionalidad similar en un futuro próximo). Está licenciado como licencia BSD. Podría ayudar.

+3

Pero lo siento, parece que ya está muerto hace mucho tiempo y no tiene documentación ... Respondí demasiado rápido sin mirarlo. –

-4

Divulgo el Nikolas answer de otra pregunta.

Tienes 2 formas básicas:

  1. Si usted es perezoso, pruebe los javax.measure library
  2. Si no es perezoso, escribir su propia clase 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. 
    
    } 
    

    Uso:

    double myPounds = 5.5; 
    doube myKilos = Converter.poundsToKg(myPounds); 
    
Cuestiones relacionadas