2013-04-16 1000 views
16

Tôi cần hiển thị số có dấu phẩy và dấu thập phân.định dạng số có dấu phẩy và số thập phân trong C# (asp.net MVC3)

Ví dụ: Trường hợp 1: Số thập phân là 432.324 (Điều này không có dấu phẩy hoặc điểm thập phân) Cần để hiển thị nó như 432,324.00
nhưng không phải 432.324

Trường hợp 2: Số thập phân là 2.222.222,22 (Điều này không có dấu phẩy) Cần hiển thị nó dưới dạng 2,222,222.22

Tôi đã thử ToString("#,##0.##"). Nhưng nó không phải là định dạng nó

+3

Khi bạn nói "nó không được làm việc", là những gì mà string.Format thực sự đang làm gì? – tomasmcguinness

+0

tôi đã không thử string.Format phương pháp và tôi điều sử dụng định dạng dây rút là dễ dàng – Krishan

+2

Tôi thực sự không hiểu ví dụ của bạn, loại định dạng là gì? (Hoặc là nó chỉ cho tôi) – V4Vendetta

Trả lời

39
int number = 1234567890; 
Convert.ToDecimal(number).ToString("#,##0.00"); 

Bạn sẽ nhận được kết quả 1,234,567,890.00.

+0

trong mô hình, nó giống như số thập phân công khai {get; set;}, khi tôi sử dụng để nhập vào giá trị cơ sở dữ liệu 29.1234 tôi nhận được kết quả trong dạng xem 29.12 ngay cả khi tôi thay đổi số thập phân cơ sở dữ liệu (18,4). , 2) nhưng tôi vẫn nhận được giá trị như 29.1200 nhưng tôi muốn giá trị chính xác với bất kỳ thay đổi là nó có thể – SAR

+0

những gì địa ngục, câu trả lời này được chấp nhận? nó mang lại cho tôi 1 234 567 890,00 – Toolkit

3

Câu hỏi của bạn không phải là rất rõ ràng nhưng điều này nên đạt được những gì bạn đang cố gắng để làm:

decimal numericValue = 3494309432324.00m; 
string formatted = numericValue.ToString("#,##0.00"); 

Sau đó formatted sẽ chứa: 3,494,309,432,324.00

6

Hãy thử với

ToString("#,##0.00") 

Từ MSDN

* Định dạng thông số định dạng tùy chỉnh "0" đóng vai trò là ký hiệu giữ chỗ. Nếu giá trị đang được định dạng có chữ số ở vị trí mà số không xuất hiện trong chuỗi định dạng, chữ số đó được sao chép vào chuỗi kết quả; nếu không, một số không xuất hiện trong chuỗi kết quả. Vị trí của số 0 ngoài cùng bên trái trước dấu thập phân và số không ngoài cùng bên phải sau dấu thập phân xác định phạm vi các chữ số luôn luôn hiện diện trong chuỗi kết quả.

Công cụ chỉ định "00" làm cho giá trị được làm tròn thành chữ số gần nhất trước chữ số thập phân, trong đó làm tròn từ số 0 luôn được sử dụng. Ví dụ, định dạng 34,5 với "00" sẽ cho kết quả giá trị 35. *

16

Có lẽ bạn chỉ muốn chuỗi định dạng chuẩn "N", như trong

number.ToString("N") 

Nó sẽ sử dụng ngàn dải phân cách, và cố định số thập phân phân số. Biểu tượng cho hàng nghìn dấu tách và biểu tượng cho dấu thập phân phụ thuộc vào nhà cung cấp định dạng (thường là CultureInfo) mà bạn sử dụng, cũng như số thập phân (thường sẽ bằng 2, như bạn yêu cầu).

Nếu nhà cung cấp định dạng chỉ định số thập phân khác nhau và nếu bạn không muốn thay đổi nhà cung cấp định dạng, bạn có thể cung cấp số thập phân sau N, như trong .ToString("N2").

Chỉnh sửa: Các kích thước của các nhóm giữa các dấu phẩy được điều chỉnh bởi các mảng

CultureInfo.CurrentCulture.NumberFormat.NumberGroupSizes 

, cho rằng bạn không chỉ định một nhà cung cấp định dạng đặc biệt.

4
CultureInfo us = new CultureInfo("en-US"); 
TotalAmount.ToString("N", us) 
+0

CultureInfo us = new CultureInfo ("en-US") đã làm nó cho tôi – Toolkit

2

Tất cả những gì cần là "#, 0,00", C# thực hiện phần còn lại.

Num.ToString ("#, 0.00" ")

  • Các "#, 0" định dạng ngàn tách
  • "0,00" lực lượng hai điểm thập phân
4

tôi đã có Tôi muốn định dạng các số như định dạng "Chung" trong bảng tính, có nghĩa là hiển thị số thập phân nếu chúng có ý nghĩa, nhưng cắt chúng ra nếu không. Nói cách khác:

1234,56 => 1,234.56

1234 => 1.234

Nó cần phải hỗ trợ một số lượng tối đa những nơi sau thập phân, nhưng không đặt trailing số không hoặc chấm nếu không cần thiết, và dĩ nhiên, nó cần phải thân thiện với văn hóa. Tôi không bao giờ thực sự tìm ra một cách rõ ràng để làm điều đó bằng cách sử dụng String.Format một mình, nhưng một sự kết hợp của String.Format và Regex.Replace với một số trợ giúp văn hóa từ NumberFormatInfo.CurrentInfo đã làm công việc (LinqPad C# Program).

string FormatNumber<T>(T number, int maxDecimals = 4) { 
    return Regex.Replace(String.Format("{0:n" + maxDecimals + "}", number), 
         @"[" + System.Globalization.NumberFormatInfo.CurrentInfo.NumberDecimalSeparator + "]?0+$", ""); 
} 

void Main(){ 
    foreach (var test in new[] { 123, 1234, 1234.56, 123456.789, 1234.56789123 }) 
     Console.WriteLine(test + " = " + FormatNumber(test)); 
} 

Tạo:

123 = 123 
1234 = 1,234 
1234.56 = 1,234.56 
123456.789 = 123,456.789 
1234.56789123 = 1,234.5679 
0
string Mynewcurrency = DisplayIndianCurrency("7743450.00"); 
     private string DisplayIndianCurrency(string EXruppesformate) 
     { 
     string fare = EXruppesformate; 
     decimal parsed = decimal.Parse(fare, CultureInfo.InvariantCulture); 
     CultureInfo hindi = new CultureInfo("en-IN"); 
    // string text = string.Format(hindi, "{0:c}", parsed);if you want <b>Rs 77,43,450.00</b> 
    string text = string.Format(hindi, "{0:N}", parsed); //if you want <b>77,43,450.00</b> 
     return ruppesformate = text; 
    } 
0

Hãy thử với

ToString("#,##0.###") 

Tạo:

1234,55678 => 1,234.556

1234 => 1.234