【问题标题】:trying to convert the string to double试图将字符串转换为双精度
【发布时间】:2011-07-12 10:07:31
【问题描述】:

我有两个来自数据库的值,我需要将这些值转换为双精度值,我已经这样做了 我刚刚提到了这样的局部变量

            string val;
            string dpayment;

我通过以下查询从数据库中获取值

  if (dt != null)
  {
    if (dt.Rows.Count > 0)
    {


        dpayment = Convert.ToDouble(dt.Rows[1]["monthlyamount"]).ToString("0.00");

     val= Convert.ToInt32( dt.Rows[3]["value"]).ToString();       
    }
  }

我正在使用这些值并像这样进行操作

                 double eqvperiod = Convert.ToDouble(val / dpayment).ToString();

但它给出了错误

操作符'/'不能作为string和string类型的操作数。

任何人都可以帮助解决这个问题

我的最终结果是我想将来自数据库的值转换为双精度值,我必须对这些值进行操作

【问题讨论】:

  • 为什么要将来自数据库的值存储为字符串?当您转换为 int 或 double 时,为什么要调用 toString() 呢?如果你希望 eqvperiod 是双精度的,你为什么要在除法结果上调用 toString() ?

标签: c# string datatable double


【解决方案1】:

除法前转换为double

double eqvperiod = Convert.ToDouble(val) / Convert.ToDouble(dpayment);

实际上,您不需要第二次Convert() 然后ToString() 然后Convert()

int val = 0;
double dpayment = 0.0;

if (dt != null && dt.Rows.Count > 0)
{
     dpayment = Convert.ToDouble(dt.Rows[1]["monthlyamount"]);

     val= Convert.ToInt32( dt.Rows[3]["value"]);       
}

double eqvperiod = val / dpayment;

【讨论】:

  • 我在双重 eqvperiod = val / dpayment 处收到类似“使用未分配的本地变量”的错误;
  • 我不能使用这个函数之外的数据库值 if (dt != null && dt.Rows.Count > 0) { dpayment = Convert.ToDouble(dt.Rows[1]["monthlyamount"] ); val=Convert.ToInt32(dt.Rows[3]["value"]); }
  • 我已经更新了初始化 valdpayment 的答案,这应该可以解决这个错误。我不确定您所说的“使用数据库值”是什么意思。
【解决方案2】:

为什么将 val 和 dpayment 声明为字符串?如果您希望它们是数字类型,则更改变量声明并删除 ToString,即

int val;
double dpayment;

dpayment = Convert.ToDouble(dt.Rows[1]["monthlyamount"]);
val= Convert.ToInt32( dt.Rows[3]["value"]);

【讨论】:

  • 我在双重 eqvperiod = val / dpayment 处收到类似“使用未分配的本地变量”的错误;
  • 在声明它们时将值初始化为 0,即 int val = 0;
  • 在声明它们时将值初始化为 0,即
【解决方案3】:

你也可以double.Parse("0.010")

这也适用于 int、short、decimal 以及可能的任何其他数字类型

【讨论】:

    【解决方案4】:

    试试这个:

    double eqvperiod = (Convert.ToDouble(val) / Convert.ToDouble(dpayment));
    

    【讨论】:

      【解决方案5】:

      这个怎么样?

      double eqvperiod = 0.00;
      
      if (dt != null && dt.Rows.Count > 0)
      {
          eqvperiod = Convert.ToDouble(dt.Rows[1]["monthlyamount"]) /
                        Convert.ToInt32(dt.Rows[3]["value"]);
      }
      

      【讨论】:

        猜你喜欢
        • 2011-08-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-10
        相关资源
        最近更新 更多