Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

Zahl zu groß für REST-Funktion?





Frage

Hallo allerseits, weiß jemand von Euch, warum ich mit der Formel =REST(F1; 9) für F1 = 1207803040 und F1 = 1207903040 vernünftige Ergebnisse bekomme (7 und 8), für F1 = 1208003040 aber #ZAHL! ? Die Excel-Hilfe liefert mir dazu unter "Spezifikationen und Einschränkungen von Excel" keine Erklärung, obwohl es so aussieht, als ob da eine (Integer-)Grenze überschritten wird. Kann man da was über irgendwelche Einstellungen ändern? (Excel 2002) Eigentlich würde ich für eine Aufgabe ja gerne mal 13-stellige Zahlen verwenden, aber wenn bei den Berechnungen schon bei der 10. Stelle Schluss ist, dann lohnt das nicht. Gruß, CaroS

Antwort 1 von CaroS

Zwischenerkenntnis:
...
REST(1207959549; 9) = 6
REST(1207959550; 9) = 7
REST(1207959551; 9) = 8
REST(1207959552; 9) = #ZAHL!
REST(1207959553; 9) = #ZAHL!

Aber bei anderen Teilern sieht´s noch schlimmer aus, da liegt die Grenze scheinbar noch niedriger. Oder bin ich hier auf dem völlig falschen Dampfer?

Es wird Zeit, dass es Wochenende wird.
CaroS

Antwort 2 von rainberg

Hallo CaroS,

an was das liegt kann ich Dir nicht sagen, aber in der OH von Ecxel 2003 steht folgendes:

Die REST-Funktion kann auch mit Hilfe der GANZZAHL-Funktion formuliert werden:

MOD(n, d) = n - d*INT(n/d)


Das würde für Dein Beispiel bedeuten:

=F1-9*GANZZAHL(F1/9)


Damit bekommst Du auch bei 13-stelligen Zahlen das richtige Ergebnis.

Gruß Rainer

Antwort 3 von CaroS

Danke Rainer,

das steht auch in meiner Hilfe. Aber so lange kein (in)offizielles Statement sagt, dass bzw. warum die REST-Funktion nicht funktioniert, würde ich gern darauf verzichten, eine vorhandene Excel-Funktion mit anderen Mitteln nachzubauen. Die Formeln werden dadurch länger, unübersichtlicher, fehleranfälliger, und wer weiß, was noch alles passiert ...

Mir ist schon klar, dass das wieder einmal eine ziemlich "unanständige" Frage ist, aber kann ich nicht (von Excel/Microsoft) erwarten, dass sich eine nicht sehr komplizierte Funktion innerhalb der üblichen Grenzen einfach nur normal verhält?

Schönes Wochenende!
CaroS

Antwort 4 von rainberg

Hallo CaroS,

ich kann zwar Deine Aufregung verstehen aber nicht mildern.

Man muss eben einfach akzeptieren, dass in allen Office-Anwendungen noch Fehler erhebliche stecken bzw. Probleme auftreten bei denen das "Warum" einfach nicht dokumentiert wird.

Ich rege mich darüber schon lange nicht mehr auf, zumal dies hier auch das falsche Forum wäre, weil hier Bill und Kollegen wahrscheinlich nicht mitlesen.

Gruß
Rainer

Antwort 5 von mr_x_hacker

Hi,

falls es hilft: Wenn Dein Teiler d ist, dann ist die Zahl, ab der es nicht mehr geht: d * 134217728

134217728 ist zufällig 2^27...
Somit halte ich es nicht für einen "Bug", sondern einfach für einen Überlauf, der bei allen Zahlen irgendwann mal vorkommen muß... ich hätte ihn halt vielleicht eher bei 2^32 erwartet, aber wer weiß - vielleicht braucht MS an der Stelle noch 5 Bit für was anderes :)
Zitat:
kann ich nicht (von Excel/Microsoft) erwarten, dass sich eine nicht sehr komplizierte Funktion innerhalb der üblichen Grenzen einfach nur normal verhält?

Hier wäre dann die Frage, was die "üblichen" Grenzen sind - Du hast schon gewisse "große" Zahlen...
(erinnert mich an einen Thread mit dem SN-Zeichenlimit pro Posting - willst Du Dich nichtmal als "Extremtester" bewerben, um die Grenzen gewisser Software zu bestimmen? :) Ich merke auch immer erst beim User, dass ich einen zu kleinen Wertebereich vorgesehen habe... ^^)
However, ich wollte nur mal auf das mit der 2er-Potenz hinweisen, und dass es somit ein typisches "Programmierer-Problem" sein dürfte - ich werde nicht diskutieren, welchen Zahlen wann wie groß werden dürfen sollten :)

Ciao Sascha

Antwort 6 von CaroS

Hallo,

danke für Eure Antworten. Ein bisschen geholfen haben sie mir ja doch, denn immer-hin haben sich (mindestens) 2 Leute das Problem mal angesehen und bestätigt, dass es existiert. Das ist besser, als wenn sich 20 gemeldet und geschrieben hätten,
"ich weiß gar nicht, was du willst, bei mir funktioniert´s."

Ansonsten habt Ihr natürlich recht, was Fehler in der SW und die Möglichkeiten der Anwender betrifft. Man muss sie wohl so oder so hinnehmen und darf wählen, auf welche Weise man es tut. Sascha kann ich versichern, dass ich nicht hobby-mäßig auf der Suche nach Fehlern bin, sondern dass ich ihnen zufällig, ungewollt und auch nicht gerade gerne begegne. Denn das kostet dann leider immer zusätzliche Zeit, sich erstmal zu vergewissern, dass es nicht an der eigenen Dummheit, dem Nichtbeachten irgendwelcher dokumentierter Regeln oder einfach nur an einem "allgemein bekannten" Bug liegt.

Der Bedarf an 13 Stellen erklärt sich übrigens so: Ich wollte eine Kennnummer für Gegenstände in einem hierarchischen System bauen, wo ich von 4 Ebenen und 3 Stellen (= max. 999 Dinge) pro Ebene ausgegangen bin. Das ist ziemlich bescheiden! Die Kennnummer sollte leicht zu generieren und leicht auszuwerten sein und noch eine zusätzliche "Information" im Bereich 1 bis 9 enthalten, die man (weil oft benötigt) möglichst leicht ermitteln können sollte. Da drängt sich die REST-Funktion quasi auf. Aber so geht es nun nicht und mit den Mitteln der Text-(i.S.v. String-)Verarbeitung wird es leider wesentlich aufwändiger.

Zu der Frage "übliche Grenzen" gibt es eine einfache Antwort: Üblich ist, dass etwas innerhalb der Grenzen funktioniert, die der Hersteller selbst angibt. Für eine typische Ganzzahl-Funktion sollte das also der Wertebereich der ganzen Zahlen (natürlich nicht der Gleitkommazahlen) sein. Wenn ich mich in dem schon genannten Hilfetext "Spezifi-kationen und Einschränkungen von Excel" sowie in "Datentypen (Zusammenfassung)" informiere, finde ich dazu drei möglicherweise relevante Angaben:

Genauigkeit bei Zahlen:              15 Stellen,
Größte zulässige positive Zahl:    1,79769313486231E308,
Long (lange Ganzzahl): 4 Bytes: -2.147.483.648 bis 2.147.483.647
                                               (das entspricht -2^31 bis 2^31 - 1, 32. Bit = Vorzeichenbit),

nehme davon das Minimum:

2.147.483.647 < 999.999.999.999.999 < 1,79769313486231E308

und finde, dass 1.207.959.552 (= 134217728 * 9) im Vergleich dazu keine besonders große Zahl ist. Wenn die REST-Funktion bis 2^31 - 1 einwandfrei funktioniert und erst oberhalb davon schlapp gemacht hätte, hätte ich diesen Thread wahrscheinlich nicht eröffnet, sondern die mutmaßliche Ganzzahl-Grenze von 2^31 stillschweigend akzeptiert.

Gruß,
CaroS

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: