**News Alert:**Experts Exchange Confirmed as Safe in Cloudbleed Leak Read More

Solved

Posted on 2013-02-04

I am fairly new to VB.net and need to know how to convert/display 16th's and 32nd's from stored db numbers. Numbers in the are stored like below.

32.8125000 This is a 16th

27.5937500 this is a 32nd.

I need 32.812500 to print as 32-13/16 and 27.5937500 as 27-19/32.

Does vb.net have any internal functions to convert/display these type of numbers.

Thanks

32.8125000 This is a 16th

27.5937500 this is a 32nd.

I need 32.812500 to print as 32-13/16 and 27.5937500 as 27-19/32.

Does vb.net have any internal functions to convert/display these type of numbers.

Thanks

3 Comments

IE

Ifi i had 5 numbers

10

9

8

7

6

how would I know that 10 should be in 32

9 should be in 16

8 should be in 32

7 should be in 16

6 should be in 32 ????

You could use a pre-built function written by others:

http://www.codeproject.com/Articles/165320/Easy-Way-of-Converting-a-Decimal-to-a-Fraction

(using http://www.developerfusion.com/tools/convert/csharp-to-vb/ to convert)

Or:

You could just build a lookup table:

```
Dim Dec2Frac as new Dictionary(string, string)
Dec2Frac.Add(".8125", " 1/16") 'note the space in the fraction
Dec2Frac.Add(".59375", " 1/32")
Dim theNumber As String
Dim myVal As Double = 27.59375
theNumber = myVal.ToString()
If theNumber.Contains("."C) Then
theNumber = theNumber.Replace(theNumber.ToString().Split("."C)(1), Dec2Frac(theNumber.ToString().Split("."C)(1).Trim("0"C)))
Else
theNumber = theNumber.Trim("0"C).Trim("."C)
End If
```

```
Public Class Form1
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
TextBox2.Text = DecToImperialFraction(TextBox1.Text)
End Sub
Private Function DecToImperialFraction(ByVal strDecimal As String) As String
Const ThirtySecond As Decimal = 0.03125
Dim ret As String = ""
Dim dec As Decimal
If Decimal.TryParse(strDecimal, dec) Then
Dim int As Integer = CInt(Math.Truncate(dec))
ret = int
dec = dec - int
If dec > 0 Then
Dim numerator As Integer = CInt(dec / ThirtySecond)
If numerator > 0 Then
Dim denomiator As Integer = 32
While (numerator Mod 2 = 0 AndAlso denomiator Mod 2 = 0) OrElse (numerator Mod 3 = 0 AndAlso denomiator Mod 3 = 0)
If numerator Mod 2 = 0 AndAlso denomiator Mod 2 = 0 Then
numerator = numerator / 2
denomiator = denomiator / 2
Else
numerator = numerator / 3
denomiator = denomiator / 3
End If
End While
ret = ret & "-" & numerator & "/" & denomiator
End If
End If
End If
Return ret
End Function
End Class
```

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Join the community of 500,000 technology professionals and ask your questions.