Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0375: Gebrochene Dezimalzahlen in ganze Brüche wandeln

 von 

Beschreibung 

Wer gebrochene Dezimalzahlen in ganze Brüche wandeln möchte um diese beispielsweise optisch darzustellen, sollte sich dieses Beispiel einmal anschauen.

Schwierigkeitsgrad:

Schwierigkeitsgrad 2

Verwendete API-Aufrufe:

keine

Download:

Download des Beispielprojektes [2,38 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Projekt1.vbp -------------
'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Schaltfläche "Command1"
' Steuerelement: Textfeld "Text1"
' Steuerelement: Beschriftungsfeld "Label2"
' Steuerelement: Beschriftungsfeld "Label1"


'Autor: Benjamin Wilger
'E-Mail: BDoubyu@web.de

Option Explicit

Private Sub Command1_Click()
    Dim Frac As Double, Zähler As Long
    Dim Nenner As Long, Ganze As Long
    Dim i As Long
    
    Frac = Text1.Text
    Ganze = Fix(Frac)
    Frac = Frac - Fix(Frac)
    
    Nenner = 1
    For i = 1 To 5
        Frac = Frac * 10
        Nenner = Nenner * 10
        
        'Kleiner Workaround: Bei fix(x) und x\1 klappt
        'es manchmal nicht ganz.
        If InStr(1, CStr(Frac), ",") <= 0 Then Exit For
    Next i
    
    'Falls Kommastellen länger als 5 sind, dann werden
    'sie gerundet. s.u.
    
    Zähler = Frac
    
    'Kürzen
    For i = Zähler To 2 Step -1
        If ((Zähler \ i) = (Zähler / i)) _
            And ((Nenner \ i) = (Nenner / i)) Then
            
            Zähler = Zähler \ i
            Nenner = Nenner \ i
            i = Frac
        End If
    Next i
    
    'Ausgabe
    If Ganze Then
        If Zähler Then
            Label1.Caption = Ganze & " " & Zähler & "/" & Nenner
        Else
            Label1.Caption = Ganze
        End If
    ElseIf Zähler Then
        Label1.Caption = Zähler & "/" & Nenner
    Else
        Label1.Caption = 0
    End If
End Sub
'---------- Ende Formular "Form1" alias Form1.frm  ----------
'-------------- Ende Projektdatei Projekt1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 3 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von Felix.S am 13.02.2009 um 22:05

Ich dachte, dass das einen Bruch folgend ausgibt:
3/4 + 1/7 + 3/76 + 7/517 + 5/857 + ...
Ich finde das ein bisschen zu einfach.

Kommentar von PapaDAU am 26.10.2003 um 16:58

Betr: 0375 Brüche

kleine Änderung, Focus auf Text1 setzen:
me.text1.setfocus

Frac = Text1.Text
Ganze = Fix(Frac)
Frac = Frac - Fix(Frac)

Kommentar von PapaDAU am 26.10.2003 um 16:52

Betr.: Brüche
Frac = Frac * 10
Nenner = Nenner * 10

funktioniert genauer bei:
Frac = Frac * 1000
Nenner = Nenner * 1000
MfG
Baltes