Câu trả lời:
String.format("%1$,.2f", myDouble);
String.format tự động sử dụng ngôn ngữ mặc định.
%1, %2và như vậy có thể được sử dụng để sắp xếp lại đầu ra dựa trên chỉ mục của các đối số đầu vào của bạn. Xem này . Bạn có thể bỏ qua chỉ mục và thứ tự mặc định sẽ được giả định bởi trình định dạng.
String.format("%4.3f" , x) ;
Điều đó có nghĩa là chúng ta cần tổng cộng 4 chữ số trong ans, trong đó có 3 chữ số sau số thập phân. Và f là định dạng định dạng của double. x có nghĩa là biến mà chúng ta muốn tìm nó. Đã làm cho tôi . . .
String.format("%014.3f" , 58.656565)-> 0000000058,657: Tổng cộng có 14 ký hiệu: 8 số 0 và 5 số và 1 dấu phẩy. Vì vậy, trong trường hợp này, số 14 có nghĩa là tổng số ký hiệu ( các ký hiệu phụ được thay thế bằng số 0 đứng đầu, có thể không có, sau đó nó sẽ thay thế bằng khoảng trắng) trong chuỗi kết quả . Phần .3hoàn toàn độc lập ở đây.
String.format("%014.3f" , 58.656565)-> 58,657. Tôi lấy nó bởi vì sở thích đi đến .3fphần: đầu tiên nó in số có 3 chữ số thập phân và sau khi có các ký hiệu còn lại, nó sẽ in các khoảng trắng hàng đầu (hoặc số 0 / bất cứ thứ gì). Trong trường hợp này, số là 2 + 3 + 1 = 6 ký hiệu và chúng tôi chỉ muốn in 4, vì vậy chắc chắn không có khoảng trắng thừa.
Nếu bạn muốn định dạng nó bằng các ký hiệu được đặt thủ công, hãy sử dụng:
DecimalFormatSymbols decimalFormatSymbols = new DecimalFormatSymbols();
decimalFormatSymbols.setDecimalSeparator('.');
decimalFormatSymbols.setGroupingSeparator(',');
DecimalFormat decimalFormat = new DecimalFormat("#,##0.00", decimalFormatSymbols);
System.out.println(decimalFormat.format(1237516.2548)); //1,237,516.25
Định dạng dựa trên địa phương được ưa thích, mặc dù.
mã được trích xuất từ liên kết này ;
Double amount = new Double(345987.246);
NumberFormat numberFormatter;
String amountOut;
numberFormatter = NumberFormat.getNumberInstance(currentLocale);
amountOut = numberFormatter.format(amount);
System.out.println(amountOut + " " +
currentLocale.toString());
Đầu ra từ ví dụ này cho thấy định dạng của cùng một số khác nhau như thế nào với Locale:
345 987,246 fr_FR
345.987,246 de_DE
345,987.246 en_US
public class MainClass {
public static void main(String args[]) {
System.out.printf("%d %(d %+d %05d\n", 3, -3, 3, 3);
System.out.printf("Default floating-point format: %f\n", 1234567.123);
System.out.printf("Floating-point with commas: %,f\n", 1234567.123);
System.out.printf("Negative floating-point default: %,f\n", -1234567.123);
System.out.printf("Negative floating-point option: %,(f\n", -1234567.123);
System.out.printf("Line-up positive and negative values:\n");
System.out.printf("% ,.2f\n% ,.2f\n", 1234567.123, -1234567.123);
}
}
Và in ra:
3 (3) +3 00003
Định dạng
dấu phẩy
động mặc định: 1234567,123000 Dấu phẩy động có dấu phẩy: 1.234.567,123000 Mặc định dấu phẩy động âm: -1.234.567,123000
Negative dấu chấm động tùy chọn: (1.234.567, 123000)Các giá trị dương và âm thẳng hàng:
1.234.567,12
-1.234.567,12
Có nhiều cách bạn có thể làm điều này. Những người được đưa ra dưới đây:
Giả sử số ban đầu của bạn được đưa ra dưới đây: số kép = 2354548.235;
NumberFormatChế độ sử dụng và làm tròn
NumberFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
DecimalFormat decimalFormatter = (DecimalFormat) nf;
decimalFormatter.applyPattern("#,###,###.##");
decimalFormatter.setRoundingMode(RoundingMode.CEILING);
String fString = decimalFormatter.format(number);
System.out.println(fString);
Sử dụng định dạng chuỗi
System.out.println(String.format("%1$,.2f", number));
Trong mọi trường hợp, đầu ra sẽ là: 2354548.24
Lưu ý :
Trong quá trình làm tròn bạn có thể thêm RoundingModevào định dạng của bạn. Dưới đây là một số chế độ Làm tròn được đưa ra dưới đây:
decimalFormat.setRoundingMode(RoundingMode.CEILING);
decimalFormat.setRoundingMode(RoundingMode.FLOOR);
decimalFormat.setRoundingMode(RoundingMode.HALF_DOWN);
decimalFormat.setRoundingMode(RoundingMode.HALF_UP);
decimalFormat.setRoundingMode(RoundingMode.UP);
Dưới đây là hàng nhập khẩu :
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Locale;
Sử dụng DecimalFormat
NumberFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
DecimalFormat decimalFormatter = (DecimalFormat) nf;
decimalFormatter.applyPattern("#,###,###.##");
String fString = decimalFormatter.format(myDouble);
System.out.println(fString);
String.format(Locale.GERMAN, "%1$,.2f", myDouble);