2012-01-08 70 views
16

Tôi muốn chuyển đổi một số thành 2 chữ số thập phân (Luôn hiển thị hai chữ số thập phân) trong thời gian chạy. Tôi cố gắng một số mã nhưng nó chỉ thực hiện, như hình dưới đâyChuyển đổi số thành 2 chữ số thập phân trong Java

20.03034 >> 20.03 
20.3 >> 20.3 (my code only rounds not converts) 
tuy nhiên

, tôi muốn nó làm điều này:

20.03034 >> 20.03 
20.3 >> 20.30 (convert it to two decimal places) 

Mã của tôi dưới đây:

angle = a variable 
angle_screen = a variable 

DecimalFormat df = new DecimalFormat("#.##"); 
angle = Double.valueOf(df.format(angle)); 
angle_screen.setText(String.valueOf(angle) + tmp); 

Bất kỳ giúp đỡ về cách để làm điều này sẽ là tuyệt vời, cảm ơn.

+0

Mã của bạn là thiếu sót bằng cách nào đó. Bạn chuyển đổi một đôi thành một chuỗi với một định dạng đặc biệt. Sau đó, bạn chuyển đổi nó trở lại thành một đôi và sau đó bạn chuyển đổi nó trở lại thành một chuỗi mà không chỉ định bất kỳ định dạng nào. Tôi đoán đó là sai. Mục đích của biến 'tmp' cũng không rõ ràng. – Robert

+2

Bạn nên đọc API 'DecimalFormat' - câu trả lời ở đó và nó khá rõ ràng. – Paul

+1

có thể trùng lặp của [Làm tròn đôi thành 2 số có nghĩa sau dấu thập phân] (http://stackoverflow.com/questions/2808535/round-a-double-to-2-significant-figures-after-decimal-point) –

Trả lời

52

thử cập nhật new DecimalFormat("#.00");

này:

double angle = 20.3034; 

    DecimalFormat df = new DecimalFormat("#.00"); 
    String angleFormated = df.format(angle); 
    System.out.println(angleFormated); //output 20.30 

Mã của bạn đã không được sử dụng một cách chính xác decimalformat

Các 0 trong mô hình có nghĩa là một chữ số bắt buộc, cáC# có nghĩa là chữ số tùy chọn .

cập nhật 2: kiểm tra Bellow trả lời

Nếu bạn muốn 0.2677 định dạng như 0.27 bạn nên sử dụng new DecimalFormat("0.00"); nếu không nó sẽ .27

+1

Nó không hoạt động:/ –

+0

Tôi đã tìm ra .. Tôi đã cập nhật câu trả lời –

+0

Vâng 100% hoạt động, nhờ –

2

Hãy thử

DecimalFormat df = new DecimalFormat("#,##0.00"); 
+0

Nó không hoạt động:/ –

15

Hãy thử điều này: String.format("%.2f", angle);

+2

Câu trả lời hay nhất cho những người có API tối thiểu dưới 24! Cảm ơn bạn! :) – Necroqubus

+0

@Necroqubus Bạn được chào đón! :) – Jagger

18
DecimalFormat df=new DecimalFormat("0.00"); 

Sử dụng mã này để nhận được hai chữ số thập phân chính xác. Ngay cả khi giá trị là 0,0, nó sẽ cho u 0,00 làm đầu ra.

Thay vào đó nếu bạn sử dụng:

DecimalFormat df=new DecimalFormat("#.00"); 

It wont chuyển đổi 0,2659 vào 0.27. Bạn sẽ nhận được câu trả lời như .27.

+5

lý do tại sao điều này không có nhiều phiếu bầu hơn ?!nó là thông tin quan trọng cần được thêm vào câu trả lời được chấp nhận – sports

+0

lý do tại sao nó không chuyển đổi giá trị float của tôi 98786545/10^6 thành hai định dạng thập phân. Sau khi chuyển đổi nó thành hai thập phân tôi muốn lưu nó dưới dạng một chuỗi. –

+0

@sports \t Yêu cầu cấp API 24 do đó giải pháp khá xấu đối với các dự án có khả năng tương thích – Necroqubus

Các vấn đề liên quan