Vấn đề với việc một số lượng nhất định và hiển thị nó với ToString ("C", văn hóa) là nó có hiệu quả thay đổi số tiền tiền tệ mặc định của nền văn hóa nhất định. Nếu bạn có một số tiền nhất định, mã tiền tệ ISO của số tiền đó và bạn muốn hiển thị nó cho một nền văn hóa nhất định, tôi khuyên bạn chỉ nên tạo một phương thức mở rộng thập phân như phương thức dưới đây. Điều này sẽ không tự động giả định rằng đơn vị tiền tệ bằng loại tiền tệ mặc định của nền văn hóa:
public static string ToFormattedCurrencyString(
this decimal currencyAmount,
string isoCurrencyCode,
CultureInfo userCulture)
{
var userCurrencyCode = new RegionInfo(userCulture.Name).ISOCurrencySymbol;
if (userCurrencyCode == isoCurrencyCode)
{
return currencyAmount.ToString("C", userCulture);
}
return string.Format(
"{0} {1}",
isoCurrencyCode,
currencyAmount.ToString("N2", userCulture));
}
Điều này sẽ sử dụng ký hiệu tiền tệ địa phương hoặc mã tiền tệ ISO với số tiền - tùy theo điều kiện nào phù hợp hơn.Thông tin thêm về chủ đề in this blog post.
Một lưu ý nhỏ cho độc giả trong tương lai, số thập phân là loại ưa thích cho các giá trị tiền tệ. Vui lòng xem câu trả lời này của Zneak để biết thêm chi tiết: https://stackoverflow.com/a/3730040/2573109 –