2012-06-21 25 views
1

我在寫一個使用C#和mono的Android應用程序。我需要從一個活動(Android窗體)中獲取一個字符串並將其轉換爲一個double。當我這樣做時,我得到了非常奇怪的結果。例如,在下面的(未完成的)方法double.parse:Android的C#單聲道 - double.parse給出奇怪的結果

protected override void OnActivityResult(int requestCode, Result resultCode, Intent data) 
    { 
     try 
     { 
      //add/edit the task 
      if (resultCode == Result.Ok) 
      { 
       if (m_isAddMode) 
       { 

        var tliTemplateControl = new TemplateControlTaskListItem(); 
        tliTemplateControl.Code = data.GetStringExtra("selectedtask"); 
        tliTemplateControl.Description = data.GetStringExtra("selecteddescription"); 
        tliTemplateControl.RequiredQty = double.Parse(data.GetStringExtra("qty")); 


        m_taskList.Items.Add(tliTemplateControl); 

        this.ListAdapter = new TaskListAdapter(this, m_taskList.Items); 
       } 
       else 
       { 

       } 
      } 
     } 
     catch (Exception ex) 
     { 

     } 
    } 

返回-1.03054917417467E-05時正在分析的文本是 「2」。 這是在Visual Studio 2010中,用於Android 4.2.3的mono。 有沒有人有任何想法?謝謝。

+0

如何減少你的例子?你的語言環境是什麼? – CodesInChaos

回答

1

把事情分得更細。將您的中間結果存儲在變量中。每個陳述做一件事 - 不要將一次計算的結果鏈接到另一次計算中。使用你的調試器。檢查每一步發生的情況。

什麼字符串可以data.GetStringExtra(「qty」)返回,真的嗎?嘗試使用「2」測試它是否相等。它周圍是否有空白,還是有一些奇怪的長度? (畢竟,「2」應該是一個字符長)

如果使用字符串文字運行double.Parse(「2」),會得到什麼結果?

在某些時候,你會看到你做錯了什麼,或者你會發現肯定是編譯器或庫區的東西。當你到達這一點時,你會知道下一步該做什麼。