2015-05-28 29 views
2

我在丹麥服務器上維護應用程序,我需要檢查一個texbox並確保該值大於1且小於26。問題是一些人使用一個小數,一些使用正常的小數。我已經嘗試了下面的代碼,但它不適用于丹麥服務器,但它在本地運行良好。任何想法或幫助將不勝感激。謝謝!如何檢查丹麥服務器上的小數邊界

 if (!String.IsNullOrEmpty(d_m.Text)) 
      {     

       if (Convert.ToDouble(d_m.Text) < 1 || Convert.ToDouble(d_m.Text) > 25) 
       { 
        if (checkfields == false) Response.Write("<tr><td></td><td><font color='red'><b>\"Ship draught\" must be a number greater than 0 and less than 25.</b></font></td></tr>"); 

        requeredFieldsMissing = true; 

       } 
      } 
+2

停止治療號碼,如文本。但是,如果你必須使用'Convert.ToDouble(string,IFormatProvider)' – Darek

+0

@JamesZ你可能錯誤地認爲逗號是千位分隔符,而逗號是小數點分隔符?它的後者在這裏有問題。 – paqogomez

+0

逗號被用作小數點,但有些人也使用小數點作爲小數點。他們要我編碼,以便他們可以使用。 –

回答

2

嘗試像下面這樣。它先後嘗試將文本解析爲雙,使用偏好的降序

  • 盒子上的當前區域性,
  • 丹麥文化
  • 不變文化

第一培養成功解析價值的勝利。下面的代碼:

static double? String2Double(string text) 
{ 
    CultureInfo[] acceptableCultures = 
    { 
    CultureInfo.CurrentCulture   , // prefer the current culture on the box 
    CultureInfo.GetCultureInfo("da-DK") , // then the Danish culture 
    CultureInfo.InvariantCulture   , // and finally, we'll try the invariant culture 
    } ; 
    double? value = null ; 

    for (int i = 0 ; i < acceptableCultures.Length && !value.HasValue ; ++i) 
    { 
    CultureInfo ci = acceptableCultures[i] ; 
    double  v ; 
    bool  parsedSuccessfully = double.TryParse(text , NumberStyles.AllowDecimalPoint , ci , out v) ; 

    value = parsedSuccessfully ? v : (double?)null ; 

    } 

    return value ; 
} 

然後,你可以這樣說:

double? userValue = String2Double(GetUserTextFromTextBox()) ; 
if (!userValue.HasValue) throw new ArgumentException("that's not a number!"); 
if (userValue < 1.0 || userValue > 26.0) throw new ArgumentOutOfRangeException("value must be between 1.0 and 26.0 inclusive") ; 
-1
if (!String.IsNullOrEmpty(d_m.Text)) 
     {     
      var num = Convert.ToDouble(d_m_Text.Replace(',', '.')); 
      if (num < 1 || num > 25) 
      { 
       if (checkfields == false) Response.Write("<tr><td></td><td><font color='red'><b>\"Ship draught\" must be a number greater than 0 and less than 25.</b></font></td></tr>"); 

       requeredFieldsMissing = true; 

      } 
     }