[Webinar] Streamline your web hosting managementRegister Today

x
• Status: Solved
• Priority: Medium
• Security: Public
• Views: 139

# VB.net help--How to

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
0
tambrosi
1 Solution

Commented:
how would the program KNOW to display something as said fraction

IE

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 ????
0

Senior .Net DeveloperCommented:
There is no built in function:

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
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
``````
0

Middle School Assistant TeacherCommented:
Try something like this?
``````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
``````
0

## Featured Post

Tackle projects and never again get stuck behind a technical roadblock.