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


Автор: kurzon 14.9.2010, 00:31
Как преобразовать string в double?
Код

 double d = double.Parse(textBox2.Text);


Код

Error    1    Cannot implicitly convert type 'double' to 'int?'. An explicit conversion exists (are you missing a cast?)       


Автор: CYBERDREAM 14.9.2010, 09:10
а точно ругается на эту строку?

Автор: Springtime 14.9.2010, 12:59
у тебя по всей видимости строка пустая, точнее ты туда нечего не прописывал, а если ты ни разу не прописывал значения в textBox2.Text, то содержания этого поле - null
юзай TryParse
http://www.rsdn.ru/forum/dotnet/2363647.flat.aspx

Автор: CYBERDREAM 14.9.2010, 14:49
Сомневаюсь что textBox.Text==null  smile 
даже если строка пустая, то выкинет : 
Цитата

Input string was not in a correct format.

Думаю все таки автор ошибся строкой, где выдало ошибку, не спроста ведь упоминается int
Вот строка типа
Код

int d = Double.Parse("223"); 

выдаст как раз упомянутый в начале ексепшин

Автор: WolfAlone 16.9.2010, 09:05
Код

string str1="123";
double d1=0;
d1=Convert.ToDouble(str1);

Автор: CYBERDREAM 16.9.2010, 09:31
Цитата(WolfAlone @ 16.9.2010,  09:05)
Код

string str1="123";
double d1=0;
d1=Convert.ToDouble(str1);

а ты это к чему?

Автор: WolfAlone 16.9.2010, 09:37
Это я к:
Цитата(kurzon @  14.9.2010,  00:31 Найти цитируемый пост)
Как преобразовать string в double?


Автор: CYBERDREAM 16.9.2010, 10:06
а разве его код не аналогично сработает?

Автор: WolfAlone 16.9.2010, 10:10
Честно говоря, мне показалось, что его код не работает... И именно по этому он задал вопрос "Как преобразовать string в double?"...

Автор: CYBERDREAM 16.9.2010, 10:13
Convert.ToDouble в конечном итоге вызывает Double.Parse так что разницы большой нет, дело выбора. Думаю автор ошибся в чем то другом

Добавлено через 4 минуты и 35 секунд
Например
Цитата

If you look at a decompilation of the Convert class you're going to find that most simple conversions map down to the .Parse method for a given type, for example, Convert.ToInt32 will simple wrap a call to int.Parse(). So, in most situations it will be faster to call int.Parse() instead of using the Convert class.

That applies to V1.x of the framework.  The problem with Parse() methods is they rely entirely on exception handling and can result in slightly slower performance. Also in some Convert methods you will notice more correct conversion code (such as code specifying a format provider for instance).

In the V2.x framework you will find .TryParse() methods that avoid the traditional try/catch reliance and will perform better than the classic .Parse methods. I've not decompiled any V2.x classes (too busy with work to care) but I would imagine the new Convert implementations make use of TryParse.

The answer? V1.x int.Parse() is a direct path most of the time, in V2.x use TryParse (especially with floating point types). In all cases Convert methods should perform worse if you're writing 'proper' code.

Автор: WolfAlone 16.9.2010, 10:21
Цитата(CYBERDREAM @  16.9.2010,  10:13 Найти цитируемый пост)
Convert.ToDouble в конечном итоге вызывает Double.Parse так что разницы большой нет

Извините, не знал таких тонкостей! Просто проверил написанный мной код - всё работает. Код автора - не проверял.

Автор: kurzon 16.9.2010, 11:46
Я уже решил проблему.

Автор: CYBERDREAM 16.9.2010, 11:52
а сказать миру и пометить как решенный?
Общественность ведь взволнована ошибкой

Автор: kurzon 16.9.2010, 19:46
2CYBERDREAM Я это уже сделал два дня назад, когда не было не одного ответа, какие претензии.
Я, что виноват, что люди не смотрят, что тема решенная.
Видно ты тоже не видишь.

Автор: kurzon 17.9.2010, 00:09
Мене нужно было до базы данных добавить дробовое число, типа real, нужно перевести в тип float, но сначала в Double, так как сразу перевести невозможно в float, а real не совместимый с  Double.
Сначала хотел реализовать с помощью TextBox, а потом решил обойтись numericUpDown.
 
Код

numericUpDown1.DecimalPlaces = 2;
float d = (float)Convert.ToDouble(numericUpDown1.Value);

Таким образом решил проблему.

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