Реализация этого кода правила для моего вывода функции - PullRequest
0 голосов
/ 19 февраля 2019

Итак, я создаю математическую программу, в ней есть пара функций, одна из функций - это десятичный разделитель, что это такое:

пользователя спрашивают, сколько десятичных знаков между 1 и5. он хотел бы, чтобы его ответы отображались для другой математической функции.

Допустим, пользователь выбирает ответ с точностью до 4 десятичных знаков, затем он устанавливает его и выбирает решатель квадратного уравнения, онзапрашивают значения A, B, C, как только он рассчитан, скажем, он дает вводы 1, -8 и 15, ответ -3 и 5. Однако, поскольку он выбрал свой ответ, чтобы быть до 4 десятичных знаковответ должен быть представлен как -3.0000 и 5.0000

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

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

'Правило десятичного разряда

     Sub Accuracy()

      Line1: 
      Dim DP 
      Console.WriteLine("Please Enter the Decimial Limit between 1-5: ") 
      DP = Double.Parse(Console.ReadLine()) 

      If (DP > 5) Then 
      Console.WriteLine("Error, Decimial Limit is between 1 and 5, Please Try Again!") 
       GoTo Line1

        Else
        DP = DP
       Console.Write("Decimial Limit has been Set Succuesfully to " & DP & " Decimal Places")
        End If
         End Sub

' Функция квадратного уравнения

   Sub QuadraticFunction() 
    Dim a, b, c As Integer 
    Dim d, x1, x2 As Double

   line1:

   Console.WriteLine("Please Input a Non-Zero Number, A: ")
  a = Console.ReadLine()
   If (a = 0) Then
   Console.WriteLine("Error, Number must not be 0, Try Again!")
   GoTo line1
   End If
   Console.WriteLine("Please Input The Value of, B: ")
    b = Console.ReadLine()

   Console.Write("Please Input the Value of, C: ")
   c = Console.ReadLine()

   d = b * b - (4 * a * c)
    If (d = 0) Then

   Console.WriteLine("Both Roots Are Equal.")
   x1 = -b / (2.0 * a)
   x2 = x1
    x1 = Math.Round(x1, DP)
   x2 = Math.Round(x1, DP)
    Console.WriteLine("First Root, (Root1) = {0}", x1)
    Console.WriteLine("Second Root, (Root2) = {0}", x2)

   ElseIf (d > 0) Then

   Console.WriteLine("Both Roots are Real and Different")

   x1 = (-b + Math.Sqrt(d)) / (2 * a)
   x2 = (-b - Math.Sqrt(d)) / (2 * a)


   x1 = (Math.Round(x1, DP))
   x2 = (Math.Round(x2, DP))

   Console.WriteLine("First Root, (Root1) = {0}", x1)
   Console.WriteLine("Second Root, (Root2) = {0}", x2)

   Else

  Console.Write("Root are Imaginary " & "No Solution")
    End If
    End Sub

1 Ответ

0 голосов
/ 19 февраля 2019

Важна точность, которую использует WriteLine, а не то, к чему вы округлили.Таким образом, используйте спецификаторы формата с плавающей точкой :

Console.WriteLine("First Root, (Root1) = {0:F"&DP&"}", x1)

, поскольку Fxx - это число с плавающей запятой с xx цифрами после десятичной точки, и нет необходимости округлять, где вы делаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...