2012-06-21 1 views
1

Я пишу приложение для Android с использованием C# и моно. Мне нужно взять строку из одного из действий (формы Android) и преобразовать ее в двойную. Когда я это делаю, я получаю очень странные результаты. Так, например, в double.parse ниже (незавершенный) метод:C# Mono для Android - 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. У кого-нибудь есть идеи? Спасибо.

+0

Как насчет сокращения вашего примера? И какой у вас язык? – CodesInChaos

ответ

1

Разделите вещи более мелко. Храните промежуточные результаты в переменных. Сделайте одно дело за утверждение - не связывайте результат одного вычисления с другим вычислением. Используйте свой отладчик. Осмотрите, что происходит на каждом шагу.

Какая строка DOES data.GetStringExtra ("qty") возвращает, действительно? Попробуйте проверить его на равенство с «2». Есть ли у него пробелы вокруг, или это какая-то странная длина? («2» должно быть длиннее одного символа).

Что вы получите, если вы запустите double.Parse («2»), со строковым литералом?

В какой-то момент вы либо увидите, что вы делаете неправильно, либо найдете что-то, что определенно является областью компилятора или библиотеки. Когда вы доберетесь до этого момента, вы узнаете, что делать дальше.

Смежные вопросы