2009-05-25 15 views
5

Web server chạy trong Hà Lan (Bỉ)double.TryParse trong dutch

double output; 

double.TryParse(txtTextbox1.Text, out output); 

Đây có phải là một cách tốt để chuyển đổi văn bản sẽ tăng gấp đôi trong môi trường dutch? Giả sử đầu vào là "24.45" thay vì "24,45"

+1

Argh, bây giờ tôi đã hát này bị mắc kẹt trong đầu của tôi: http://www.youtube.com/watch?v=Rt6Co7EMNCU –

+0

Cảm ơn Matthew Brindley –

Trả lời

26

Nếu bạn muốn sử dụng người Hà Lan (Bỉ) định dạng số:

double output; 
double.TryParse("24,45", NumberStyles.Any, CultureInfo.GetCultureInfo("nl-BE"), out output); 

Hoặc sử dụng định dạng số của Hoa Kỳ:

double output; 
double.TryParse("24.45", NumberStyles.Any, CultureInfo.GetCultureInfo("en-US"), out output); 

Nếu bạn cố gắng để phân tích "24,45" với một người Hà Lan bộ văn hóa, bạn sẽ quay lại "2445", tương tự, nếu bạn cố phân tích "24,45" với văn hóa Hoa Kỳ, bạn sẽ nhận được "2445". Nếu bạn muốn phân tích cú pháp để thất bại nếu dấu thập phân sai được sử dụng, thay đổi NumberStyles.Any để loại trừ lá cờ: NumberStyles.AllowThousands:

double output; 
if (double.TryParse("24.45", NumberStyles.Any^NumberStyles.AllowThousands, CultureInfo.GetCultureInfo("nl-BE"), out output)) 

Nếu toàn bộ ứng dụng của bạn là tiếng Hà Lan, bạn nên thay đổi CultureInfo bạn trên toàn cầu - here's how to do it in WinFormshere's how to do it in ASP.NET.

Khi bạn đang sử dụng một thiết lập trên toàn cầu CultureInfo, bạn có thể thay đổi mã ở trên để:

double output; 
double.TryParse("24.45", NumberStyles.Any, CultureInfo.CurrentCulture, out output); 
+0

Nếu tôi đặt CultureInfo trên toàn cầu, double.TryParse ("24.45", đầu ra) sẽ thực hiện giống như double.TryParse ("24.45", NumberStyles.Any, CultureInfo.CurrentCulture, ra đầu ra)? –

+0

Câu trả lời rất hay! – Cerebrus

0

Bạn nên đặt văn hóa thành tiếng Hà Lan. Văn hóa là những gì xác định cách chuỗi đại diện cho số được phân tích cú pháp.

Kiểm tra bài viết này: HOW TO: Set Current Culture Programmatically in an ASP.NET Application, nó giải thích cả cách thiết lập văn hóa cho ứng dụng ASP.NET và cho chuỗi hiện tại.

0

Nếu thiết lập khu vực của máy chủ của bạn được thiết lập để số Hà Lan, hãy thử này:

double output; 
double.TryParse(txtTextbox1.Text, System.Globalization.NumberStyles.Any, System.Globalization.CultureInfo.CurrentCulture, out output); 
0

Bạn có thể sử dụng quá tải cho phép bạn chỉ định ngôn ngữ (ví dụ với ngôn ngữ Thụy Điển, vì tôi biết cách thức hoạt động của nó):

double result; 
if (double.TryParse("24,95", NumberStyles.AllowDecimalPoint, CultureInfo.GetCultureInfo("sv-SE"), out result)) 
{ 
    Console.WriteLine(result.ToString()); 
} 

Nếu tôi chuyển "24,95" trong lời gọi trên tới TryParse, nó sẽ trả về false, vì dấu thập phân Thụy Điển là ",".

Bạn có thể muốn thử nghiệm thông số NumberStyles để có được hành vi chính xác mà bạn muốn. Ví dụ, nếu tôi sẽ thay đổi để NumberStyles.Any và gọi phương thức với đầu vào 24,95 ở trên, TryParse trả về true và kết quả sẽ là 2495, mà có thể không phải là những gì bạn muốn.

2

Mã văn hóa chính xác cho tiếng Hà Lan-Bỉ là "nl-BE", vì vậy bạn nên sử dụng thay vì "nl-NL" được đề xuất thường xuyên, sẽ cung cấp cho bạn biến thể của cài đặt văn hóa Hà Lan phù hợp với Hà Lan.

double output; 
double.TryParse("24.45", NumberStyles.Any, CultureInfo.GetCultureInfo("nl-BE"), out output); 

Bạn có thể tìm thấy danh sách đầy đủ các mã văn hóa tại http://arvindlounge.spaces.live.com/blog/cns!C9061D5B358A2804!263.entry.

0

phiên bản của tôi hoạt động tốt với cả hai tách '.'',':

public static double? GetDoubleFromString(string strNum) 
     { 
      double num = 0; 
      strNum = strNum.Replace(',', '.'); 

      if (double.TryParse(strNum, NumberStyles.Any, CultureInfo.GetCultureInfo("en-US"), out num)) 
       return num; 

      return null; 
     } 
+1

Điều này sẽ không hoạt động tốt với các số như '1,234,567.89' hoặc' 1.234.567,89' – phoog

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