2009-07-28 11 views
32

Ho un'applicazione che dovrà eseguire un numero di conversioni di unità (da metrica a imperiale, da imperiale a metrica).Libreria di conversione unità metrica Java?

Esiste una libreria Java esistente che esegue questa operazione? O avrò bisogno di rotolare il mio? (Le mie prime ricerche su Google si sono dimostrate moderatamente inutili.)

+3

Si può dare un'occhiata a questo https://github.com/mbe24/sius ormai supporta metro, miglio per lunghezza e chilogrammo, sterlina per massa. Supporta l'aggiunta e effettua la conversione del tipo * implicito *. È staticamente digitato, quindi gli errori di conversione sono visibili al momento della compilazione :) Aggiungerò altre funzionalità :) – mike

risposta

46

c'è uno specifico JSR 275 (javax.measure) con JScience come RI (implementazione di riferimento). Per esempio la conversione di 100 miglia in chilometri è facile come:

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

(si noti che le unità sono al sicuro tutti i tipi di una fase di compilazione, una caratteristica killer imho)

Il contrario può essere facile:

UnitConverter toMiles1 = KILOMETER.getConverterTo(MILE); 

o SuperEasy come:

UnitConverter toMiles2 = toKilometers.inverse(); 

importazioni 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

Grazie per questo; Non ne avevo mai sentito parlare, ma sarà estremamente utile nel mio lavoro. – I82Much

+6

Molto bello, ma la richiesta è stata respinta e ho scaricato JScience 5.0 e non ho trovato un'implementazione come quella nell'esempio qui mostrato. Qualcuno può indicare come questo può essere realizzato ora? – CCC

+2

JSR 275 è stato rifiutato – Nate

0

Ho trovato Java Unit Conversion library a SourceForge, ma non l'ho ancora provato (mi servirà una funzionalità simile nel prossimo futuro). È concesso in licenza come licenza BSD. Potrebbe aiutare.

+3

Ma mi dispiace, sembra, è già morto da molto tempo e non ha documentazione ... Ho risposto troppo velocemente senza guardarlo. –

-4

Riporto il Nikolas answer da un'altra domanda.

Hai 2 modi di base:

  1. Se siete pigri, provare il javax.measure library
  2. Se non siete pigri, scrivere il proprio Converter classe:

    public class Converter { 
    
        public static double feetToCm(double feet) { 
         return feet * 30.48; 
        } 
    
        public static double poundsToKg(double pounds) { 
         return pounds * 0.45359237; 
        } 
    
        // etc. 
    
    } 
    

    Usage:

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