2017-01-13 2 views
-1

Почему это не работает?C#'s Math.exp() vs visual basic's exp()

double value; 
double.TryParse(textBox1.Text, out value); 
MessageBox.Show(1/1 + (Math.Exp(-value)).ToString()); 

Но тот же код в VB работает с его синтаксисом:

Dim value As Double 
value = Val(TextBox1.Text) 
MessageBox.Show((1/(1 + Exp(-value)))) 

Что я здесь делаю неправильно?

+1

иметь в виду, что мы не знаем, что вы а) мы ожидаем, и б) Какой вклад вы при условии, и поэтому также не может даже знать, c) что он на самом деле делает. –

+2

По крайней мере, ваши парнеры находятся в разных местах кода C#, и из-за приоритета оператора вы получаете эквивалент '1 + Math.Exp (-value)', так как '1/1' =' 1' – pinkfloydx33

+0

Что делать вы имеете в виду РАБОТЫ ?! опубликуйте результат здесь. хотя ваши оба кода не одинаковы, потому что у вас есть '(1/(1 + Exp (-value)))' в vb, но '1/1 + (Math.Exp (-value))' в C#, поэтому вам нужно изменить C# to '1/(1 + Math.Exp (-value))' – Hamid

ответ

2

Вероятно потому, что ваше первое утверждение ошибочно помещенные скобки:

MessageBox.Show(1/1+(Math.Exp(-value)).ToString()); 

или переформатировать для лучшего понимания:

MessageBox.Show(1/1 + (Math.Exp(-value)).ToString()); 

Здесь вы вычислить 1/1 (который 1 и int, и следующая добавить (Math.Exp(-value)).ToString(), который является string, поэтому вы хотите добавить string в int.

Это, вероятно, следует:

MessageBox.Show((1/(1+Math.Exp(-value))).ToString()); 

или для лучшего понимания:

MessageBox.Show((1/(1+Math.Exp(-value))).ToString());