vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Fortgeschrittene Programmierung
Re: Dezimal in Bruch 
Autor: Benjamin Wilger
Datum: 11.04.02 16:30

Hi!

Es gibt da zwei grundsätzliche Verfahren. Das eine wandelt zuerst die Zahl in einen ZehnerBruch um: 0,53 wird zu 53/100 und dann wird solange gekürzt, bis nichts mehr geht. Dann habe ich vor ca. 2 Jahren zu Anfängen meiner Programmierung diesen Code hier geschrieben, der auch mit mit langen irrationalen Zahlen umgehen kann. Allerdings blick ich da selbst net mehr durch, was ich da geschrieben habe

Der Code braucht einen Button und zwei TextBoxen(txtFraction, txtDecimal).

Vielleicht bringt er Dir ja was:

Private Sub Command1_Click()
Dim ganze As Double, zähler As Double, nenner As Double
Dim DeziStr As Double, BruchStr As String, n As Double
Dim pGanze As String, pZähler As String, pNenner As String
Dim dummy As Variant
Dim AZeit As Double, warned As Boolean
Dim retVal As VbMsgBoxResult

On Error Resume Next

AZeit = Timer
If (Not txtDecimal.Text = "") And (txtFraction.Text = "") Then
zähler = 1
Do

If (Timer - AZeit > 3) And (Not warned) Then
retVal = MsgBox("Dies kann u.U. sehr lange dauern!" & vbCrLf & "Wollen Sie trotzdem fortfahren?", vbOKCancel + vbExclamation, App.Title)
If retVal = vbOK Then
warned = True
Else
Exit Sub
End If
End If

DeziStr = Val(Replace(txtDecimal.Text, ",", "."))

'ACHTUNG: Hier wird die Zahl von den Ganzen Zahlen getrennt:
'Bsp: 4,35 wird zu 0,35
n = DeziStr - Fix(DeziStr)
nenner = (1 / n) * zähler
ganze = DeziStr - n

If Err Then
MsgBox "Fehler:" & vbCrLf & Err.Number & " - " & Err.Description, vbCritical, App.Title
txtFraction.Text = "#"
Exit Do
End If

Debug.Print (nenner 1) = nenner, (nenner 1), nenner

Debug.Assert zähler <> 53

If nenner 1 = nenner Then
If Not zähler = nenner Then
If ganze Then
txtFraction.Text = ganze & " " & zähler & "/" & nenner
Else
txtFraction.Text = zähler & "/" & nenner
End If
Else
txtFraction.Text = 1
End If

Exit Do
End If
zähler = zähler + 1
If Err Then
MsgBox "Fehler:" & vbCrLf & Err.Number & " - " & Err.Description, vbCritical, App.Title
Exit Do
End If

Loop

ElseIf (Not txtFraction.Text = "") And (txtDecimal.Text = "") Then

dummy = Split(txtFraction.Text, "/", 2)
pNenner = Trim(dummy(1))
pZähler = dummy(0)
If Err Then
If Err.Number = 9 Then 'Index ausserhalb . . .
pNenner = txtFraction.Text
pZähler = txtFraction.Text
End If
End If

If InStr(1, pZähler, " ") Then
dummy = Split(pZähler, " ", 2)
pGanze = Trim(dummy(0))
pZähler = Trim(dummy(1))
End If

ganze = Val(pGanze)
zähler = Val(pZähler)
nenner = Val(pNenner)

If nenner = 0 Then
txtDecimal.Text = ganze
Else
txtDecimal.Text = (zähler / nenner) + ganze
End If

' txtFraction.Text = "" 'ganze & " " & zähler & "/" & nenner
' Command1.Value = True
Else
MsgBox "Fehler:" & vbCrLf & "Felder sind nicht richtig ausgefüllt! Es muss EIN Feld leer sein.", vbExclamation, App.Title
End If

End Sub
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Dezimal in Bruch36D4rknigh711.04.02 15:47
Re: Dezimal in Bruch35Benjamin Wilger11.04.02 16:30

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel