2009-07-28 51 views
32

Tôi có một ứng dụng cần thực hiện một số chuyển đổi đơn vị (chỉ số theo Imperial, Imperial thành metric).Thư viện chuyển đổi đơn vị số liệu Java?

Có thư viện Java hiện có thực hiện việc này không? Hoặc tôi sẽ cần phải cuộn của riêng tôi? (Các tìm kiếm Google ban đầu của tôi tỏ ra vô dụng.)

+3

Bạn có thể xem https://github.com/mbe24/sius này bây giờ nó hỗ trợ đồng hồ, dặm cho chiều dài và kg, pound cho khối lượng. Nó hỗ trợ bổ sung và * chuyển đổi * ngầm định *. Nó được gõ tĩnh, do đó, lỗi chuyển đổi là hiển thị tại thời gian biên dịch :) Tôi sẽ thêm nhiều tính năng hơn :) – mike

Trả lời

46

có một số JSR 275 (javax.measure) cụ thể với JScience làm RI (Thực hiện Tham chiếu). Ví dụ chuyển đổi 100 Miles để cây số là dễ dàng như:

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

(lưu ý đơn vị là tất cả các loại an toàn một thời gian biên dịch, một tính năng sát thủ IMHO)

Điều ngược lại có thể dễ dàng:

UnitConverter toMiles1 = KILOMETER.getConverterTo(MILE); 

hoặc SuperEasy như:

UnitConverter toMiles2 = toKilometers.inverse(); 

NB nhập khẩu:

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

Cảm ơn vì điều này; Tôi chưa bao giờ nghe nói về điều này nhưng sẽ cực kỳ hữu ích trong công việc của tôi. – I82Much

+6

Rất đẹp, nhưng yêu cầu bị từ chối và tôi đã tải xuống JScience 5.0 và không thể tìm thấy triển khai giống như ví dụ được hiển thị ở đây. Bất cứ ai có thể chỉ ra làm thế nào điều này có thể được thực hiện ngay bây giờ? – CCC

+2

JSR 275 bị từ chối – Nate

0

Tôi đã tìm thấy Java Unit Conversion library tại SourceForge, nhưng tôi chưa thử nó (tôi sẽ cần tính năng tương tự trong tương lai gần). Nó được cấp phép làm giấy phép BSD. Nó sẽ giúp.

+3

Nhưng xin lỗi, có vẻ như, nó đã chết trong một thời gian dài và không có tài liệu ... Tôi trả lời quá nhanh mà không nhìn vào nó. –

-4

Tôi báo cáo số Nikolas answer từ một câu hỏi khác.

Bạn có 2 cách cơ bản:

  1. Nếu bạn là lười biếng, hãy thử các javax.measure library
  2. Nếu bạn không phải là lười biếng, viết riêng Converter lớp học của bạn:

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

    Cách sử dụng:

    double myPounds = 5.5; 
    doube myKilos = Converter.poundsToKg(myPounds); 
    
Các vấn đề liên quan