Solved

VB.net help--How to

Posted on 2013-02-04
3
131 Views
Last Modified: 2015-01-05
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
Comment
Question by:tambrosi
3 Comments
 
LVL 22

Expert Comment

by:plusone3055
ID: 38851687
how would the program KNOW to display something as said fraction

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

Expert Comment

by:Kyle Abrahams
ID: 38851812
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
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

Open in new window

0
 
LVL 85

Accepted Solution

by:
Mike Tomlinson earned 500 total points
ID: 38851882
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

Open in new window

0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

Welcome my friends to the second instalment and follow-up to our Minify and Concatenate Your Scripts and Stylesheets (http://www.experts-exchange.com/Programming/Languages/.NET/ASP.NET/A_4334-Minify-and-Concatenate-Your-Scripts-and-Stylesheets.html)…
More often than not, we developers are confronted with a need: a need to make some kind of magic happen via code. Whether it is for a client, for the boss, or for our own personal projects, the need must be satisfied. Most of the time, the Framework…
This video demonstrates how to create an example email signature rule for a department in a company using CodeTwo Exchange Rules. The signature will be inserted beneath users' latest emails in conversations and will be displayed in users' Sent Items…
I designed this idea while studying technology in the classroom.  This is a semester long project.  Students are asked to take photographs on a specific topic which they find meaningful, it can be a place or situation such as travel or homelessness.…

932 members asked questions and received personalized solutions in the past 7 days.

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

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

9 Experts available now in Live!

Get 1:1 Help Now