2011-07-12 2 views
0

У меня есть два значения, поступающие из базы данных мне нужно преобразовать эти значения в два раза я делал как этот я ahve только что говорил, как это так же, как локальные переменныепытается преобразовать строку в двойной

  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.

любой может помочь в этом

мой конечный результат я хочу, чтобы преобразовать значения исходя из базы данных в два раза, и я должен делать операции на этом значения

+0

почему вы хранения значений, которые выходят из вашей БД в виде строк? когда вы конвертируете в int или double, почему вы вызываете toString()? и если вы хотите, чтобы eqvperiod был двойным, почему вы вызываете toString() в результате деления? –

ответ

2

Преобразовать 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; 
+0

Я получил ошибку, подобную этой «использование неназначенного локального varaible» при двойном eqvperiod = val/dpayment; – user682417

+0

Невозможно использовать значения базы данных из этой функции, если (dt! = Null && dt.Rows.Count> 0) { dpayment = Convert.ToDouble (dt.Rows [1] ["monthamount"]); val = Convert.ToInt32 (dt.Rows [3] ["value"]); } – user682417

+0

Я обновил ответ на инициализацию 'val' и' dpayment', который должен исправить эту ошибку. Я не уверен, что вы подразумеваете под «использованием значений базы данных». – dahlbyk

0

Попробуйте это:

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

Почему вы объявили Вэл и dpayment как строки? Если вы хотите, чтобы они были числовыми типами, измените объявление переменной и удалите ToString, т. Е.

int val; 
double dpayment; 

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

Я получил ошибку, подобную этой «использование неназначенного локального varaible» при двойном eqvperiod = val/dpayment; – user682417

+1

Инициализировать значения до 0 при их объявлении, т. Е. Int val = 0; – DoctorMick

+0

Инициализировать значения до 0 при их объявлении, т. Е. – DoctorMick

0

Как насчет этого?

double eqvperiod = 0.00; 

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

Вы также можете сделать double.Parse("0.010")

это также работает для междунар, короткий, десятичной, и, возможно, любые другие числовые типы

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