Có cách nào để sử dụng DecimalFormat (hoặc một số định dạng tiêu chuẩn khác) đến các số định dạng như thế này:Java: Format number trong hàng triệu
1.000.000 => 1.00M
1.234.567 => 1.23M
1234567890 => 1234.57M
về cơ bản chia một số số 1 triệu USD, giữ 2 chữ số thập phân, và tát một 'M' ở cuối dòng. Tôi đã nghĩ về việc tạo ra một phân lớp mới của NumberFormat nhưng nó trông phức tạp hơn tôi tưởng tượng.
Tôi đang viết một API mà có một phương pháp định dạng trông như thế này:
public String format(double value, Unit unit); // Unit is an enum
Bên trong, tôi đối tượng Đơn vị lập bản đồ để NumberFormatters. Việc thực hiện là một cái gì đó như thế này:
public String format(double value, Unit unit)
{
NumberFormatter formatter = formatters.get(unit);
return formatter.format(value);
}
Lưu ý rằng vì điều này, tôi không thể mong đợi khách hàng để chia cho 1 triệu, và tôi không thể chỉ cần sử dụng String.format() mà không cần gói nó trong một NumberFormatter.
Bạn có muốn xử lý M (EGA) mà thôi, hoặc cũng (G) IgA, (T) kỷ nguyên , v.v. –
Nó thực sự đại diện cho một khối lượng bảo mật, do đó, nó là M (illions) và có khả năng B (illions) nhưng tôi sẽ được hạnh phúc với chỉ M. –
[Câu hỏi liên quan này] (http://stackoverflow.com/q/4753251/ 983430) đã nhận được nhiều sự chú ý gần đây (do tiền thưởng). –