Dividieren von langen Zahlen < Sonstiges < Schule < Mathe < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 10:12 Fr 31.03.2006 | Autor: | marfi |
Aufgabe | Code:LONGLONG a=9999999999999999999;
LONGLONG b=1111111111111111111;
LONGLONG c = a/b;
|
Hallo,
Wie kann man sowas oder länger korrekt dividieren?
Code:LONGLONG a=9999999999999999999;
LONGLONG b=1111111111111111111;
LONGLONG c = a/b;
c ergibt bei mir eine kunterbunte Zahl weil der Werte bereich überschritten wird.
kann man lange Zahlen irgendwie splitten? Oder besser als Bitfolge dividieren? Wie macht das die CPU?
Ich habe diese Frage auch in folgenden Foren auf anderen Internetseiten gestellt:
http://www.zfx.info/DisplayThread.php?MID=212621#212621
|
|
|
|
Hallo,
geht es dir um die einmalige Berechnung dieser Aufgabe?
Dann kannst du das Ergebnis auch einfach ablesen.
Ansonsten könntest du z.B. die schriftliche Division einfach als kleine Funktion programmieren und schon hast du das Ergebnis.
Es kommt natürlich auch an, mit welchem Programm du das Ergebnis berechnest, d.h. welchen Zahlenbereich dein Programm abdeckt.
Normalerweise werden große Zahlen als Fließkommazahl im Computer abgespeichert, die mit einer Mantisse und einem Exponenten abgespeichert wird. Auf diese Weise ist der Zahlenbereich nicht gleichmäßig verteilt, sondern in sehr kleinen Zahlenbereichen liegen die Maschinenzahlen nahe beieinander und in großen Zahlenbereichen liegen die Maschinenzahlen weiter auseinander.
Es gibt auch einige Prozessoren, die intern mit einer doppelten Genauigkeit rechnen, d.h. das Ergebnis mit mehr zur Verfügung stehenden Stellen berechnen als am Ende ausgegeben werden.
Reicht das erstmal?
|
|
|
|
|
Status: |
(Frage) beantwortet | Datum: | 11:03 Fr 31.03.2006 | Autor: | marfi |
Genau das was du schreibst möchte ich ja umgehen. Ich möchte mit meinem Programm den Werte bereich des Systems unabhänging davon überschreiten.
Ich suche eine Möglichkeit lange Zahlen z.b. 50 Stellen zu dividieren und danach ein exaktes ganzahliges Ergebnis bekommen. Nachkomma stellen interessieren mich nicht.
|
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 11:12 Fr 31.03.2006 | Autor: | Marc |
Hallo marfi,
> Genau das was du schreibst möchte ich ja umgehen. Ich
> möchte mit meinem Programm den Werte bereich des Systems
> unabhänging davon überschreiten.
>
> Ich suche eine Möglichkeit lange Zahlen z.b. 50 Stellen zu
> dividieren und danach ein exaktes ganzahliges Ergebnis
> bekommen. Nachkomma stellen interessieren mich nicht.
In welcher Programmiersprache möchtest Du das denn realisieren? Zu den meisten dürfte es passende Bibliotheken geben, Python (in der das Portal programmiert ist), hat diese bereits "eingebaut"
Beispiel für die Multiplikation
# Marc
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 11:26 Fr 31.03.2006 | Autor: | marfi |
Auf einem Windows System mit C++. Ausserdem möchte ich nicht einfach was benutzen ohne zu wissen wie es funktioniert. Das wie interessiert ich.
Das es funktioniert weiß ich ja :)
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 13:09 Fr 31.03.2006 | Autor: | marfi |
Hatte einen Denkfehler, das ganze kann man ja mit einfachen multiplikationen und vergleichen lösen.
DANKE!
|
|
|
|