2013-06-05 43 views

Trả lời

8

phần rằng có thể là một chút khó hiểu là String.format("4.3", number)

4 đại diện cho độ dài của toàn bộ số (bao gồm cả số thập phân), không chỉ là phần trước dấu thập phân. Các 3 đại diện cho số thập phân.

Vì vậy, để có được định dạng chính xác với tối đa 4 số trước số thập phân và 3 chữ số thập phân, định dạng cần thiết thực sự là String.format("%8.3f", number).

1

Bạn có thể viết chức năng in dấu cách trước số.

Nếu họ là tất cả sẽ được 4.3f, chúng ta có thể giả định rằng mỗi số sẽ mất đến 8 ký tự, vì vậy chúng tôi có thể làm điều đó:

public static String printDouble(Double number) 
{ 
    String numberString = String.format("%4.3f", number); 
    int empty = 8 - numberString.length(); 
    String emptyString = new String(new char[empty]).replace('\0', ' '); 

    return (emptyString + numberString); 
} 

Input:

public static void main(String[] args) 
{ 
    System.out.println(printDouble(1.123)); 
    System.out.println(printDouble(12.423)); 
    System.out.println(printDouble(0.123)); 
    System.out.println(printDouble(123.344)); 
    System.out.println(printDouble(1.100)); 
} 

Output:

run: 
    1,123 
    12,423 
    0,123 
123,344 
    1,100 
BUILD SUCCESSFUL (total time: 0 seconds) 
2

Đây là một phương pháp đơn giản khác, người dùng System.out.printf();

Double[] numbers = new Double[]{1.1233, 12.4231414, 0.123, 123.3444, 1.1}; 

for (Double number : numbers) { 
    System.out.printf("%7.3f\n", number); 
} 
+0

Nó thực sự là '% 8.3f', ít nhất là trên máy tính của tôi. – Djon

+0

Nó phụ thuộc vào độ dài định dạng đầu ra tôi nghĩ rằng, '123.344' chiều dài của nó là khoảng 7, đó là tối thiểu bạn nên dự trữ ở định dạng printf của bạn. –

+0

Tôi nghĩ số đầu tiên có nghĩa là tổng số ký tự cần sử dụng, nhưng tôi không chắc chắn. – Djon

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