2014-02-18 6 views
0

Не может казаться, что консоль правильно распечатывает сложные корни.Квадратичный комплексный решатель корней

If quad4ac < 0 Then 

     Dim quad4acComplex As Long = quad4ac * -1 
     Dim quadiComplex As Long = -1 
     Dim quadrComplex As Long 

     Console.WriteLine(vbNewLine & "Your Roots Are Complexed!" & vbNewLine) 

     quadrComplex = (-quadCoB/(2 * quadCoA) & "+" & (quad4ac * -1)^0.5/(2 * quadCoA)) 
     Console.WriteLine(quadrComplex) 

Похоже, что консоль рушится.

ответ

2

Вы пытаетесь присвоить строковое значение длинному значению и затем напечатать длинное значение. Я не знаю, что вы пытаетесь сделать. В случае, если вы хотите распечатать значения попробовать вычисленные:

quadrComplex = CType((-quadCoB/(2 * quadCoA) + (quad4ac * -1)^0.5/(2 * quadCoA)), Long) 
Console.Writeline(quadrComplex.Tostring) 

В случае, если вы хотите распечатать выражение попробовать

Dim quadrComplex as String 
quadrComplex = "(-" & quadCoB.Tostring & "/(2 * " & quadCoA.ToString & ") + (" & quad4ac.ToString & " * -1)^0.5/(2 * " & quadCoA.ToString & "))" 
Console.Writeline(quadrComplex) 

Вы должны рассмотреть возможность включения Option Strict в вашей программе. Таким образом, вы вынуждены компилятором использовать правильные преобразования типов самостоятельно. Это позволяет избежать многих ошибок.

0

Что вы пытаетесь сделать с амперсандами & здесь?

.... (2 * quadCoA) & "+" & (quad4ac * -1) ...

Проблема заключается в том, что & является конкатенация в VB. NET, который, конечно, не может быть присвоен Long.

Что вы ожидаете от печати на этой линии?

Console.WriteLine(quadrComplex) 

Ответ для вас будет где-то между этими двумя вопросами.

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