2009-11-23 44 views
6

Tôi muốn hiển thị một số bằng dấu phẩy và dấu thập phânsố hiển thị bằng dấu phẩy và dấu chấm thập phân

Trường hợp1: ví dụ nếu số là 3494309432324

hiển thị như 34,94,30,94,32,324 nhưng không 34,94,30,94,32,324.00

Trường hợp 2: nếu số có giá trị thập phân họ đến 2 điểm thập phân và bằng dấu phẩy

hiển thị như 12,22,222.32

hiện tôi làm việc này cho 2 chữ số thập phân, nhưng tôi không nhận được dấu phẩy

Label9.Text = sisRatio.ToString("#0.00");

bất cứ đề nghị ..

nhờ

+0

Hết sức tò mò: Tại sao bạn muốn tách số sau * hai * chữ số (thay vì sau * ba * chữ số)? – Heinzi

+1

@Heinzi: Tôi tin rằng câu hỏi có liên quan đến cách số được trình bày ở Ấn Độ. –

+0

@Fredrik: Cảm ơn, đó là điều tốt để biết. – Heinzi

Trả lời

11

Giả sử bạn muốn bình thường 3 tê ERS sau đó một dấu phẩy, tôi nghĩ rằng điều này sẽ làm những gì bạn cần:

Label9.Text = sisRatio.ToString("#,##0.##"); 

Một vấn đề nhỏ với điều này là nó sẽ chỉ có một nơi thập phân nếu điều thứ hai sẽ là 0

1

này sẽ làm việc:

Label9.Text = sisRatio.ToString("#,0.00"); //changed from "#0,0.00" to "#,0.00" 
4

Hãy thử:

Label9.Text = sisRatio.ToString("##,0.00"); 

tôi giả định rằng bạn muốn nhóm tách bởi hàng ngàn và không phải bởi hàng trăm như trong câu hỏi của bạn. Lưu ý rằng điều này sẽ sử dụng dấu phân cách cục bộ cho văn hóa hiện tại.

+0

@Jamie, có một số nền văn hóa sử dụng nhóm 2 chữ số và một số (như trong ví dụ OP) sử dụng 3 chữ số cho nhóm ngoài cùng bên phải và sau đó là 2 chữ số sau đó. Thông tin này có thể được tìm nạp từ 'CultureInfo.CurrentCulture.NumberFormat.NumberGroupSizes'. –

+0

@Frederik: Cảm ơn bạn đã chỉ ra điều đó. Tôi đã xây dựng một vài ứng dụng nhận thức miền địa phương và đã không chạy qua đó trước đây. Tôi tự hỏi nếu nhóm tiền lương của tôi trong nhóm 2 chữ số sẽ làm cho tôi cảm thấy tốt hơn về số tiền? –

4

Các phương pháp sau đây sẽ cho bạn những gì bạn đang tìm kiếm ,:

double d = 123456789.1; 
string format = d.ToString().IndexOf(NumberFormatInfo.CurrentInfo.NumberDecimalSeparator) >=0 ? "#,##0.00" : "#,##0"; 
Console.WriteLine (d.ToString(format)); 

này cũng sẽ làm việc cho các nền văn hóa mà không có nhóm 3 chữ số.

2

Dường như có hai cách để trả lời câu hỏi này:

  1. Một câu trả lời thuật toán mà cung cấp cho các số trong định dạng cụ thể ví dụ: 2 chữ số giữa dấu phẩy.

  2. Làm việc ra rằng đây là giải pháp tương đối miền địa phương, vì tôi không thể nhận được bất kỳ đề xuất ToString() nào để hoạt động trên PC của tôi.

Câu hỏi này khiến tôi hiểu ban đầu vì nó không dễ dàng như mong đợi.

-1

Hãy thử này

Private Sub frmMain_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load 
      Thread.CurrentThread.CurrentCulture = New CultureInfo("hi-IN") 
    End Sub 

và .....

Private Sub txtData_Leave(ByVal sender As Object, ByVal e As System.EventArgs) Handles txtData.Leave 
     If IsNumeric(txtData.Text) Then 
      Dim xData As Integer = txtData.Text 
      txtData.Text = xData.ToString("##,0.00") 
     End If 
    End Sub 
Các vấn đề liên quan