| Autor |
Nachricht |
Thilo87
Mitglied
Benutzerprofil
Anmeldungsdatum: 06.06.2012
Beiträge: 36
|
Thilo87 Mitglied
18:13:31 27.07.2012 Titel: |
Nachkommastellen mit Modulo -> Binärzahlen? |
Zitieren |
Hallo,
wenn man eine Division a/b durchführt, dann werden die Nachkommastellen ja mit den Resten berechnet. Um einen Algorithmus für den PC zu programmieren, müsste man also den Modulo einsetzen, was man ja sonst quasi im Kopf macht.
Ich hoffe ihr verzeiht, dass das jetzt Visual Basic-Code ist, aber es geht ja im Grunde um den Algorithmus. Der Code wäre problemlos auf C++ umzuschreiben.
Also ich habe mir die Funktion geschrieben:
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | Public Function n(ByVal a As Double, ByVal b As Double, Optional ByVal Ziffern As Double = 10)
Dim sDelimiter As String = "."
Dim sRes As String = ""
If a < b Then sRes += "0" & sDelimiter
If a Mod b = 0 Then Return a / b
If a > b Then
sRes += "" & (a - a Mod b) / b & sDelimiter
a = a Mod b
If a = 0 Then Return sRes
End If
For i = 1 To Ziffern
Dim nz As Double = 0
While a < b
a *= 10 //HIER HIER HIER
nz += 1
End While
If nz > 1 Then
For j = 2 To nz
sRes += "0"
Next
End If
sRes += "" & (a - a Mod b) / b
a = a Mod b
If a = 0 Then Exit For
Next i
Return sRes
End Function | |
Eigentlich macht sie nichts weiter, als das, was wir bei der Division im Kopf machen. Funktioniert auch wunderbar. Jetzt zur Frage: Wenn ich bei der Zeile mit "//HIER HIER HIER" statt "a *= 10" "a *= 2" schreibe, dann bekomme ich ein Ergebnis ausschließlich aus Nullen und Einsen. Sind das die richtigen Binärzahlen, oder ist das nur Zufall?
Danke,
Grüße,
Thilo |
|
|
|
 |
SeppJ
Moderator
Benutzerprofil
Anmeldungsdatum: 10.06.2008
Beiträge: 17983
|
SeppJ Moderator
21:15:11 27.07.2012 Titel: |
|
Zitieren |
Könntest du den Code bitte mal verständlich schreiben? Variablennamen mit weniger als 3 Zeichen sind ziemlich unzugänglich bei fremden Code.
Wenn ich es richtig entziffert habe, dann: Nein, das sind zwar konstruktionsbedingt nur Nullen und Einsen, aber das Ergebnis stimmt nicht. Warum überprüfst du es nicht einfach, wenn du schon ein Programm hast? Ein Gegenbeispiel sollte sich schnell finden. Falls du Schwierigkeiten mit dem Ausrechnen von Binärbrüchen im Kopf/Papier hast, dann findest du hier ein paar einfache Ergebnisse:
http://en.wikipedia.org/w ....... ystem#Fractions_in_binary
(P.S.: Falls die Ergebnisse sich entgegen meiner Analyse doch als richtig herausstellen sollten, dann schreib das bitte. Dann muss ich mal tiefer in den Code einsteigen, was du da wirklich treibst) |
_________________ Du brauchst Hilfe?, Buchempfehlungen für C++,
Wie man in Fragen den richtigen Code postet,
The Definitive C++ Book Guide and List
Zuletzt bearbeitet von SeppJ am 21:17:03 27.07.2012, insgesamt 1-mal bearbeitet |
|
 |
Thilo87
Mitglied
Benutzerprofil
Anmeldungsdatum: 06.06.2012
Beiträge: 36
|
Thilo87 Mitglied
11:47:07 28.07.2012 Titel: |
|
Zitieren |
Doch, es stimmt Lustiger Zufall. Das hatte ich gar nicht vor, zu programmieren |
|
|
|
 |
|
Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben. Sie können auf Beiträge in diesem Forum antworten. Sie können Ihre Beiträge in diesem Forum nicht bearbeiten. Sie können Ihre Beiträge in diesem Forum nicht löschen. Sie können an Umfragen in diesem Forum nicht mitmachen.
|
|
|
|
|