1

我正在使用 C# 和单声道编写一个 Android 应用程序。我需要从其中一个活动(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)
        {

        }
    }

当被解析的文本为“2”时返回 -1.03054917417467E-05。这是在 Visual Studio 2010 中,带有适用于 android 4.2.3 的单声道。有没有人有任何想法?谢谢你。

4

1 回答 1

1

把事情分得更细。将中间结果存储在变量中。每个语句做一件事——不要将一个计算的结果链接到另一个计算中。使用您的调试器。检查每一步发生的情况。

data.GetStringExtra("qty") 返回什么字符串,真的吗?尝试用“2”测试它是否相等。它周围是否有空白,或者它有一些奇怪的长度?(毕竟,“2”应该是一个字符长。)

如果您使用字符串文字运行 double.Parse("2"),您会得到什么?

在某些时候,您会看到自己做错了什么,或者您会发现某些东西绝对是编译器或库区域。当你到达那个点时,你就会知道下一步该做什么。

于 2012-06-21T10:04:33.037 回答