2012-06-29 89 views

Trả lời

9
var stringValue = Convert.ToDecimal(value).ToString("$0.00"); 

Như đã lưu ý bởi @James bên dưới, điều này sẽ mã hóa tiền tệ thành định dạng. Sử dụng định dạng C2 sẽ sử dụng định dạng tiền tệ của hệ thống. Điều này có thể được thay đổi cho hệ thống (ví dụ: trong Windows 7 - Start - Control Panel - Thay đổi ngôn ngữ hiển thị - Cài đặt bổ sung - Tiền tệ - Nhóm chữ số) và sẽ cho phép định dạng C2 hiển thị giá trị tiền tệ không có dấu phẩy khi chạy trên hệ thống cụ thể đó .

EDIT

Tất cả tín dụng cho @ James cho việc sử dụng văn hóa hiện hành. Sửa đổi duy nhất của tôi cho câu trả lời của anh ấy là sao chép NumberFormat hiện tại để có được tất cả các thuộc tính của định dạng số văn hóa hiện tại trước khi xóa CurrencyGroupSeparator.

var formatInfo = (NumberFormatInfo)CultureInfo.CurrentCulture.NumberFormat.Clone(); 
formatInfo.CurrencyGroupSeparator = string.Empty; 

var stringValue = Convert.ToDecimal(value).ToString("C", formatInfo); 
+0

yah là xong! Sẽ được chấp nhận sau 8 phút :) –

+2

Mặc dù nó hoạt động, nó không phải là một giải pháp linh hoạt tức là mã hóa tiền tệ của bạn là đô la. – James

+0

Có cách nào để chuyển đổi chuỗiValue này trở lại số không? – Micro

4

Bạn nên sử dụng lớp NumberFormat để xác định loại định dạng bạn cần, ToString mất một tham số IFormatProvider ví dụ

var formatInfo = (System.Globalization.NumberFormatInfo)CultureInfo.CurrentCulture.NumberFormat.Clone(); 
formatInfo.CurrencyGroupSeparator = ""; // remove the group separator 
Console.WriteLine(2.ToString("C", formatInfo)); 
Console.WriteLine(4.ToString("C", formatInfo)); 
Console.WriteLine(1000.ToString("C", formatInfo)); 

Điều này sẽ giữ cho định dạng số của bạn phù hợp với bất kỳ nền văn hóa nào bạn đang sử dụng.

+0

+1 cho bạn! Giải pháp tốt hơn nhiều so với câu trả lời của tôi. –

+1

Có lẽ sử dụng 'var formatInfo = (NumberFormatInfo) CultureInfo.CurrentCulture.NumberFormat.Clone();' thay vì tạo mới 'NumberFormatInfo'? theo cách đó bạn sẽ đảm bảo bạn có định dạng số đầy đủ cho văn hóa hiện tại. –

+0

@Kevin +1 yeah cho đầy đủ đó sẽ là một giải pháp tốt hơn tổng thể. Sẽ cập nhật câu trả lời của tôi. – James

2
public static class MyExtensions 
{ 
    public static string GetMoney(this decimal value, bool displayCurrency = false, bool displayPeriods = true) 
    { 
     string ret = string.Format("{0:C}", value).Substring(displayCurrency ? 0 : 1); 
     if (!displayPeriods) 
     { 
      ret = ret.Replace(",", string.Empty); 
     } 
     return ret; 
    } 
} 

Để sử dụng phương pháp mở rộng này:

decimal test = 40023.2345M; 
string myValue = test.GetMoney(displayCurrency:true, displayPeriods:false);` 
0

Chuyển đổi các giá trị số nguyên sang định dạng $ 0.00

int Value = 1000; chuỗi abc = Convert.ToDecimal (Value) .ToString ("$ 0,00"); đầu ra sẽ là $ 1000.00

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