Solved

VB.net help--How to

Posted on 2013-02-04
3
130 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
Comment Utility
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 39

Expert Comment

by:Kyle Abrahams
Comment Utility
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
Comment Utility
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

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Normally the drop down box control found in the .Net framework tools is able to select just one data and value at a time, which is displayed on the text area.   But what if you want to have multiple values to be selected in the drop down box? As …
Real-time is more about the business, not the technology. In day-to-day life, to make real-time decisions like buying or investing, business needs the latest information(e.g. Gold Rate/Stock Rate). Unlike traditional days, you need not wait for a fe…
This video shows how to remove a single email address from the Outlook 2010 Auto Suggestion memory. NOTE: For Outlook 2016 and 2013 perform the exact same steps. Open a new email: Click the New email button in Outlook. Start typing the address: …
This tutorial demonstrates a quick way of adding group price to multiple Magento products.

771 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

10 Experts available now in Live!

Get 1:1 Help Now