# Convert To Currency in Visual Basic

### Question

• yes its me again....

How would i go about converting a number such as 17.463 to USD? It should be \$17.47. Can someone give me the code please?

my code is as follows:

If ckboxDis.Checked = True Then

Dim Total = (CDbl(txtItem1.Text) + CDbl(txtItem2.Text) + CDbl(txtItem3.Text) + CDbl(txtItem4.Text) + CDbl(txtItem5.Text) + CDbl(txtItem6.Text) + CDbl(txtItem7.Text) + CDbl(txtItem8.Text) + CDbl(txtItem9.Text) + CDbl(txtItem10.Text) + CDbl(txtDelCharge.Text)) * 0.9 * 1.05

lblTotal.Text = Total.ToString()

End If

If ckboxDis.Checked = False Then

Dim Total = (CDbl(txtItem1.Text) + CDbl(txtItem2.Text) + CDbl(txtItem3.Text) + CDbl(txtItem4.Text) + CDbl(txtItem5.Text) + CDbl(txtItem6.Text) + CDbl(txtItem7.Text) + CDbl(txtItem8.Text) + CDbl(txtItem9.Text) + CDbl(txtItem10.Text) + CDbl(txtDelCharge.Text)) * 1.05

lblTotal.Text = Total.ToString()

• Edited by Monday, May 25, 2009 7:48 PM making post shorter
Monday, May 25, 2009 7:21 PM

• This version uses Decimal variables and also uses Decimal.TryParse to check that the contents of the textboxes are valid decimal numbers (I've simply made it skip any invalid numbers, you should probably do something to tell the user to enter a valid number).  I also used a loop to process the 10 TextBoxes (txtItem1 through txtItem10).

```Dim total, price As Decimal

For i = 1 To 2
Dim tb As TextBox = CType(Me.Controls("txtItem" & i.ToString), TextBox)
If Decimal.TryParse(tb.Text, price) Then total += price
Next
If Decimal.TryParse(Me.txtDelCharge.Text, price) Then total += price

total *= 1.05D
If Me.ckboxDis.Checked Then total *= 0.9D

total = Math.Ceiling(total * 100) / 100
Me.lblTotal.Text = total.ToString("C2")
```

Monday, May 25, 2009 9:03 PM
• Thank you for Blackwood's useful help.

Hi Racecar_12345,

I've reproduced Blackwood's code. It can work well and can convert "lblTotal" into two decimal places that always rounds up.

Here is the code that I reproduced in my project:

```    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim total, price As Decimal

For i = 1 To 10

Dim tb As TextBox = CType(Me.Controls("txtItem" & i.ToString), TextBox)

If Decimal.TryParse(tb.Text, price) Then total += price

Next

If Decimal.TryParse(Me.txtDelCharge.Text, price) Then total += price

total *= 1.05D

If Me.ckboxDis.Checked Then total *= 0.9D

total = Math.Ceiling(total * 100) / 100

total = Math.Round(total, 2)

Me.lblTotal.Text = total.ToString("C2")

End Sub```

If you have any concern on this issue, please feel free to let me know.

Thanks
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
Welcome to the All-In-One Code Framework! If you have any feedback, please tell us.
Wednesday, May 27, 2009 9:54 AM

### All replies

• ok, I'll explain it a bit.

When the check box is checked, it adds up the values (from txtItem1 to txtItem10) then applies a 10% discount, then it charges 5% tax.

When the check box is not checked, it adds up the values (from txtItem1 to txtItem10) then it charges 5% tax.

What i need help with: I need the output values to be in currency format. USD or CAD (\$)

Anyideas?

Why be stuck in the limits of other people, make your own programs, run things the way you want.
Monday, May 25, 2009 7:53 PM
• Use the decimal type instead of double, he's just a brief snippet.  Then, Visual Basic has a nifty function called FormatNumber that will format numbers for you and give you the option on how many decimal places to show, will put the commas in for you (group the digits) and optional parenthhesis if it's negative (instead of a - sign):

```        Dim cash As Decimal = 1.47 + 2.03
Dim cashDisplay As String = "\$" & FormatNumber(cash, 2, TriState.False, TriState.True, TriState.True)

MsgBox("Unformatted: " & cash)
MsgBox("Formatted: " & cashDisplay)

```
Monday, May 25, 2009 7:56 PM
• From your example, it looks like you want to round up to the next cent.  You can use the Math.Ceiling method to do that.  Using "C2" as the format string in the ToString method will format the number as currency with two decimal places.  I think the following will do what you want.  However, if these numbers are all currency, you might consider using Decimal rathr than Double variables.

```Dim Total = (CDbl(txtItem1.Text) + CDbl(txtItem2.Text) + CDbl(txtItem3.Text) + CDbl(txtItem4.Text) + CDbl(txtItem5.Text) + CDbl(txtItem6.Text) + CDbl(txtItem7.Text) + CDbl(txtItem8.Text) + CDbl(txtItem9.Text) + CDbl(txtItem10.Text) + CDbl(txtDelCharge.Text)) * 1.05
If ckboxDis.Checked = True Then Total *= 0.9
Total = Math.Ceiling(Total * 100) / 100
lblTotal.Text = Total.ToString("C2")
```

Monday, May 25, 2009 8:14 PM
• This version uses Decimal variables and also uses Decimal.TryParse to check that the contents of the textboxes are valid decimal numbers (I've simply made it skip any invalid numbers, you should probably do something to tell the user to enter a valid number).  I also used a loop to process the 10 TextBoxes (txtItem1 through txtItem10).

```Dim total, price As Decimal

For i = 1 To 2
Dim tb As TextBox = CType(Me.Controls("txtItem" & i.ToString), TextBox)
If Decimal.TryParse(tb.Text, price) Then total += price
Next
If Decimal.TryParse(Me.txtDelCharge.Text, price) Then total += price

total *= 1.05D
If Me.ckboxDis.Checked Then total *= 0.9D

total = Math.Ceiling(total * 100) / 100
Me.lblTotal.Text = total.ToString("C2")
```

Monday, May 25, 2009 9:03 PM
• okay maybe im just dumb, but i just cant get it to work. I'm going to try to make this as simple as possible so I can try to get a simple answer lol.

how do i get "lblTotal" to come out in two decminal places that always rounds up?

ex:
2.1 ---> 2.10
40.121--> 40.13

dont worry about the '\$' symbol, I can add it in the designer.

Why be stuck in the limits of other people, make your own programs, run things the way you want.
Wednesday, May 27, 2009 4:04 AM
• Thank you for Blackwood's useful help.

Hi Racecar_12345,

I've reproduced Blackwood's code. It can work well and can convert "lblTotal" into two decimal places that always rounds up.

Here is the code that I reproduced in my project:

```    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Dim total, price As Decimal

For i = 1 To 10

Dim tb As TextBox = CType(Me.Controls("txtItem" & i.ToString), TextBox)

If Decimal.TryParse(tb.Text, price) Then total += price

Next

If Decimal.TryParse(Me.txtDelCharge.Text, price) Then total += price

total *= 1.05D

If Me.ckboxDis.Checked Then total *= 0.9D

total = Math.Ceiling(total * 100) / 100

total = Math.Round(total, 2)

Me.lblTotal.Text = total.ToString("C2")

End Sub```

If you have any concern on this issue, please feel free to let me know.

Thanks
Please remember to mark the replies as answers if they help and unmark them if they provide no help.
Welcome to the All-In-One Code Framework! If you have any feedback, please tell us.
Wednesday, May 27, 2009 9:54 AM
• okay maybe im just dumb, but i just cant get it to work. I'm going to try to make this as simple as possible so I can try to get a simple answer lol.

how do i get "lblTotal" to come out in two decminal places that always rounds up?

ex:
2.1 ---> 2.10
40.121--> 40.13

dont worry about the '\$' symbol, I can add it in the designer.

Why be stuck in the limits of other people, make your own programs, run things the way you want.

In the code I provided above, the following line takes care of rounding up to the next cent

```total = Math.Ceiling(total * 100) / 100
```

Math.Ceiling rounds up to the next whole number, so I multiplied the total amount by 100 (so the cents become dollars) before using Math.Ceiling, then I divided by 100 afterwards (changing the dollars back to cents).

Friday, May 29, 2009 6:15 PM