Câu trả lời:
Bạn có thể muốn nhìn vào DecimalFormat
lớp học; nó hỗ trợ các địa phương khác nhau (ví dụ: ở một số quốc gia sẽ được định dạng 1.000.500.000,57
thay thế).
Bạn cũng cần chuyển đổi chuỗi đó thành một số, điều này có thể được thực hiện với:
double amount = Double.parseDouble(number);
Mẫu mã:
String number = "1000500000.574";
double amount = Double.parseDouble(number);
DecimalFormat formatter = new DecimalFormat("#,###.00");
System.out.println(formatter.format(amount));
Điều này cũng có thể được thực hiện bằng String.format (), có thể dễ dàng hơn và / hoặc linh hoạt hơn nếu bạn định dạng nhiều số trong một chuỗi.
String number = "1000500000.574";
Double numParsed = Double.parseDouble(number);
System.out.println(String.format("The input number is: %,.2f", numParsed));
// Or
String numString = String.format("%,.2f", numParsed);
Đối với chuỗi định dạng "%, 2f" - "," có nghĩa là các nhóm chữ số riêng biệt có dấu phẩy và ".2" có nghĩa là làm tròn đến hai vị trí sau số thập phân.
Để tham khảo về các tùy chọn định dạng khác, hãy xem https://docs.oracle.com/javase/tutorial/java/data/numberformat.html
Khi bạn đã chuyển đổi Chuỗi của mình thành một số, bạn có thể sử dụng
// format the number for the default locale
NumberFormat.getInstance().format(num)
hoặc là
// format the number for a particular locale
NumberFormat.getInstance(locale).format(num)
new DecimalFormat("0.##", DecimalFormatSymbols.getInstance(locale))
Vì đây là kết quả số một của Google format number commas java
, đây là câu trả lời dành cho những người đang làm việc với toàn bộ số và không quan tâm đến số thập phân.
String.format("%,d", 2000000)
đầu ra:
2,000,000
Tôi đã tạo tiện ích định dạng của riêng mình. Điều này cực kỳ nhanh trong việc xử lý định dạng cùng với việc cung cấp cho bạn nhiều tính năng :)
Nó hỗ trợ:
Mã có thể được tìm thấy ở đây . Bạn gọi nó như thế này:
public static void main(String[])
{
int settings = ValueFormat.COMMAS | ValueFormat.PRECISION(2) | ValueFormat.MILLIONS;
String formatted = ValueFormat.format(1234567, settings);
}
Tôi cũng nên chỉ ra điều này không xử lý hỗ trợ thập phân, nhưng rất hữu ích cho các giá trị nguyên. Ví dụ trên sẽ hiển thị "1.23M" là đầu ra. Có lẽ tôi có thể thêm hỗ trợ thập phân, nhưng tôi đã không thấy sử dụng quá nhiều cho nó kể từ đó tôi cũng có thể hợp nhất nó thành một loại lớp BigInteger xử lý các mảng char [] nén cho các tính toán toán học.
K
hay M
ý nghĩa của nó
public void convert(int s)
{
System.out.println(NumberFormat.getNumberInstance(Locale.US).format(s));
}
public static void main(String args[])
{
LocalEx n=new LocalEx();
n.convert(10000);
}
Bạn có thể thực hiện toàn bộ chuyển đổi trong một dòng, sử dụng mã sau:
String number = "1000500000.574";
String convertedString = new DecimalFormat("#,###.##").format(Double.parseDouble(number));
Hai dấu # cuối cùng trong hàm tạo DecimalFormat cũng có thể là 0. Cả hai cách đều hoạt động.
Câu trả lời đầu tiên hoạt động rất tốt, nhưng đối với ZERO / 0, nó sẽ định dạng là 0,00
Do đó định dạng #, ## 0,00 hoạt động tốt với tôi. Luôn kiểm tra các số khác nhau như 0/100 / 2334.30 và các số âm trước khi triển khai vào hệ thống sản xuất.
Đây là cách đơn giản nhất để đến đó:
String number = "10987655.876";
double result = Double.parseDouble(number);
System.out.println(String.format("%,.2f",result));
sản lượng: 10.987.655,88