Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Преобразование типов


Автор: arkonst 24.4.2008, 09:49
Как преобразовать sring в double    Или можно поставить вопрос по другому...как умножить значение типа string на значение типа double????

Автор: Wizard_Memfis 24.4.2008, 09:56
Можно поподробнее не совсем понятно.
1) Если надо 
Код
"10.5"*7=? 
то это одно.
2) А если 
Код
"asdf"*7=?

то это другое.
Для первого я думаю все поятно
Код

double num;
if(double.TryParse("10.5", out num))
{
Console.WriteLine("Result= "+num*7);
}
else
{
Console.WriteLine("Error!");
}

Перефразируй постановку задачи, ПЛЗ!

Автор: Alekz 24.4.2008, 09:59
парсишь строку в число (int.Parse(string) double.Parse(string) и тд. или Convert.To[куда надо]()) и умножай, сколько хочешь))

Wizard_Memfis, 
Обогнал))

Автор: arkonst 24.4.2008, 10:48
можно на примере показать???? ...то что касается Parse

Добавлено через 14 минут и 24 секунды
делаю так

 this.TempV.Text = (double.Parse(paramString)*0.01)-273;


в ответ VS дает ошибку компиляции  Error    1    Cannot implicitly convert type 'double' to 'string'    

Автор: Wanderer2019 24.4.2008, 11:50
Цитата(arkonst @  24.4.2008,  10:48 Найти цитируемый пост)
 this.TempV.Text = (double.Parse(paramString)*0.01)-273;


в ответ VS дает ошибку компиляции  Error    1    Cannot implicitly convert type 'double' to 'string'     


ну дык потомушта TextBox.Text - имеет тип string, а ты туда пишешь double - (double.Parse(paramString)*0.01)-273. Вот оно и ругается. Напиши так:
Код

this.TempV.Text = ((double.Parse(paramString)*0.01)-273).ToString();

Автор: Alekz 24.4.2008, 12:16
И вдогонку: методы Parse и ConvertTo кидают исключения (подробней - МСДН).
TryParse - не кидает исключения, просто возвращает false, если преобразование было неуспешным.

Код

try
{    
this.TempV.Text = ((double.Parse(paramString)*0.01)-273).ToString();
}
catch
{
this.TempV.Text = "Ошибка преобразования!";
}


или

Цитата(Wizard_Memfis)


Код

double num;
if(double.TryParse("10.5", out num))
{
Console.WriteLine("Result= "+num*7);
}
else
{
Console.WriteLine("Error!");
}


Автор: Dino99rus 27.4.2008, 03:01
Код

double test;
double.TryParse("10.5", out test);//test=0.0
test=double.Parse("10.5"); //Входная строка имела неверный формат

 smile 
Не понимаю почему...?
P.S. VS2005

Автор: mr.DUDA 27.4.2008, 09:45
Dino99rus, зависит от текущей локали. На английской нужна запятая вместо точки.

Автор: source777 27.4.2008, 14:13
Цитата(mr.DUDA @  27.4.2008,  09:45 Найти цитируемый пост)
На английской нужна запятая вместо точки. 
наоборот, на англ. - точка, на русской - запятая...

Если нужно везде десятичный разделитель - точка, то сделай так:
Код

Application.CurrentCulture = new System.Globalization.CultureInfo("en-US");


Автор: Dino99rus 27.4.2008, 22:04
source777, 
Угу, все работает. Спасибо. smile  

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)