2013-05-16 4 views
4

Это мой код, и я хочу, чтобы выходные данные txtA.Text и txtB.Text были в двух знаках после запятой.Как преобразовать ответ в две десятичные точки

Public Class Form1 
    Private Sub btncalc_Click(ByVal sender As System.Object, 
           ByVal e As System.EventArgs) Handles btncalc.Click 
     txtA.Text = Val(txtD.Text)/Val(txtC.Text) * Val(txtF.Text)/Val(txtE.Text) 
     txtB.Text = Val(txtA.Text) * 1000/Val(txtG.Text) 
    End Sub 
End Class 

ответ

7

Попробуйте использовать Format функцию:

Private Sub btncalc_Click(ByVal sender As System.Object, 
          ByVal e As System.EventArgs) Handles btncalc.Click 
    txtA.Text = Format(Val(txtD.Text)/Val(txtC.Text) * 
        Val(txtF.Text)/Val(txtE.Text), "0.00") 
    txtB.Text = Format(Val(txtA.Text) * 1000/Val(txtG.Text), "0.00") 
End Sub 
9

Для вариантов форматирования см this

Dim v1 as Double = Val(txtD.Text)/Val(txtC.Text) * 
        Val(txtF.Text)/Val(txtE.Text) 
txtA.text = v1.ToString("N2"); 
4

Если у вас есть Decimal или подобный числовой тип, вы можете использовать:

Math.Round(myNumber, 2) 

EDIT: Таким образом, в вашем случае, это было бы:

Public Class Form1 
    Private Sub btncalc_Click(ByVal sender As System.Object, 
          ByVal e As System.EventArgs) Handles btncalc.Click 
    txtA.Text = Math.Round((Val(txtD.Text)/Val(txtC.Text) * Val(txtF.Text)/Val(txtE.Text)), 2) 
    txtB.Text = Math.Round((Val(txtA.Text) * 1000/Val(txtG.Text)), 2) 
    End Sub 
End Class 
+0

то где я должен вставлять этот код? – Husna5207

+0

ok tq очень :) – Husna5207

2

Позвоните мне ленивым, но:

lblTellBMI.Text = "Your BMI is: " & Math.Round(sngBMI, 2) 

Ie: Label lblTellBMI покажет ваш ИМТ:, а затем добавить значение от Одиночный тип переменной (sngBMI) как 2 десятичные точки, просто используя Math.Round me ThOD.

Метод Math.Round округляет значение до ближайшего целого числа или к указанному числу дробных цифр.

Источник: https://msdn.microsoft.com/en-us/library/system.math.round(v=vs.110).aspx

1

Ран в эту проблему сегодня, и я написал функцию для этого. В моем конкретном случае мне нужно было убедиться, что все значения не менее 0 (следовательно, имя «LT0») и округлены до двух знаков после запятой.

 Private Function LT0(ByVal Input As Decimal, Optional ByVal Precision As Int16 = 2) As Decimal 

      ' returns 0 for all values less than 0, the decimal rounded to (Precision) decimal places otherwise. 
      If Input < 0 Then Input = 0 
      if Precision < 0 then Precision = 0 ' just in case someone does something stupid. 
      Return Decimal.Round(Input, Precision) ' this is the line everyone's probably looking for. 

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