Wozu braucht man noch float und double?
-
Integer vs. Double schrieb:
Und wenn du in großen Maßstäben, also viele Jahre rechnest, dann nimmst du halt nicht ne Pikosekunde als Basiseinheit, sondern z.b. ne Millisekunde.
Das reicht und du kannst ein paar Millionen Jahre hochrechnen.Man kann bestimmte ne Menge. Die Einheitensysteme, mit denen die Leute denken, sind aber längst festgelegt. Warum sollten die geändert werden, nur um Festkommaarithmetik ausnutzen zu können. Man hat doch angenehme Fließkommaarithmetik. Berechne doch mal die Kraft, mit der sich Sonne und Erde anziehen. Da hast Du irgendwo das Produkt der beiden Massen und das ist etwa 10^55kg². Warum sollte man sich bei so einer harmlosen Rechnung überlegen müssen, dass man die Einheit kg nicht nehmen kann, weil eine 128 Bit Ganzzahl so große Zahlen nicht darstellen kann. Das wäre doch ein echter Rückschritt.
-
Gregor@Home schrieb:
Integer vs. Double schrieb:
Und wenn du in großen Maßstäben, also viele Jahre rechnest, dann nimmst du halt nicht ne Pikosekunde als Basiseinheit, sondern z.b. ne Millisekunde.
Das reicht und du kannst ein paar Millionen Jahre hochrechnen.Man kann bestimmte ne Menge. Die Einheitensysteme, mit denen die Leute denken, sind aber längst festgelegt. Warum sollten die geändert werden, nur um Festkommaarithmetik ausnutzen zu können. Man hat doch angenehme Fließkommaarithmetik. Berechne doch mal die Kraft, mit der sich Sonne und Erde anziehen. Da hast Du irgendwo das Produkt der beiden Massen und das ist etwa 10^55kg². Warum sollte man sich bei so einer harmlosen Rechnung überlegen müssen, dass man die Einheit kg nicht nehmen kann, weil eine 128 Bit Ganzzahl so große Zahlen nicht darstellen kann. Das wäre doch ein echter Rückschritt.
Wie das Programm das intern in Integer macht kann dem Anwender doch egal sein.
Der gibt seine 55 kg ein und fertig.Genauso wie du beim Euro deine 2,50 € eingibst obwohl das Programm intern in Cent rechnet.
-
Integer vs. Double schrieb:
Wie das Programm das intern in Integer macht kann dem Anwender doch egal sein.
Der gibt seine 55 kg ein und fertig.Einer muss es ja programmieren.
-
Wie baust du einen Taschenrechner, bei dem du nicht vorher sagen kannst, mit welchen Größenordnungen du zu rechnen hast. Dann müsstest du bei jeder weiteren eingegebenen Zahl und bei jedem Rechenschritt prüfen, ob deine Skalierung noch passt. Ganz schön umständlich, wo du doch eigentlich nur die Funktionsweise der Fließkommazahlen nachbaust.
-
Fließkomma ist doch nix anderes als festkomma mit ner variablen 10er potenz
.
Und wenn das komma "im sinne" immer nach der ersten ziffer stellst,... naja,...Die frage sollte eigentlich lauten:
Warum gibt es noch keine handelsüblichen ALU's mit achtfacher genauigkeit ?grüße
-
Bashar schrieb:
Integer vs. Double schrieb:
Außerdem rechnet Int genau, double tut das nicht.
3/2 == 1
3.0/2.0 == 1.5
Wenn das deine Vorstellung von Genauigkeit ist ...naja, wenn man 3 durch 2 teilt, bleibt ein rest 1. Eins geteilt durch 2 geht nicht, also rechnet man 10 geteilt durch 2...
also in asm.......:)
(arme 8bit-Welt, konnte immer nur mit Zahlen bis 255 bwz +127 oder -127 rechnen...;))
-
Selbst bei der besten realistisch machbaren fixed point Arithmetik ist dein Wertebereich winzig gegenüber Fließkommazahlen. Oftmals hat man eben Rechnungen in denen sehr kleine und sehr große Zahlen gleichzeitig vorkommen oder man eben nicht vorher weiß, in welcher Größenordnung das Ergebnis liegt. Einfaches Beispiel: Zeichne ein Diagramm von 1/x in logarithmischen Skalen. Hier will ich mal sehen wie du das ohne Fließkomma löst.
-
zeusosc schrieb:
Die frage sollte eigentlich lauten:
Warum gibt es noch keine handelsüblichen ALU's mit achtfacher genauigkeit ?Manchmal ist vierfache Genauigkeit eben genau genug. Und mit manchmal meine ich immer.
-
schonwiedarausgeflogngrrr schrieb:
(arme 8bit-Welt, konnte immer nur mit Zahlen bis 255 bwz +127 oder -127 rechnen...;))
ganz so schlimm wars nicht, in 8 Bit kommt man (mit 2er Komplement Darstellung) von +127 bis -128
-
übrigens:
ob man mit Fix- oder Fließpunkt auskommt, hängt sehr von der Anwendung ab - auch 4-fach genaue Fließpunkt-Arithmetik reicht nie für alle Zwecke aus, ebenso wenig wie 8- oder 65536-fach genaue.
In der Zahlentheorie beispielsweise wäre jeder Rundungsfehler fatal, und die Zahlen können riesig sein. Dort ist es ein gewaltiger Unterschied, ob man beweisen kann, daß eine Zahl gleich 2.00000.....000000004839276123 ist oder exakt 2.
Dafür reicht dann weder Fix- noch Fließpunkt, man braucht Arithmetik mit beliebiger Genauigkeit wie bignums. Eine ALU, die so was kann, wäre mal hübsch.
-
!rr!rr_. schrieb:
Dafür reicht dann weder Fix- noch Fließpunkt, man braucht Arithmetik mit beliebiger Genauigkeit wie bignums. Eine ALU, die so was kann, wäre mal hübsch.
Na, wie soll die denn zum Beispiel 1./3.0 berechnen? Irgendwann ist der Speicher voll...
-
edit: nix
-
otze schrieb:
Na, wie soll die denn zum Beispiel 1./3.0 berechnen? Irgendwann ist der Speicher voll...
na indem rationale Zahlen vollständig gekürzt gespeichert werden. 1./3.0 wird gespeichert als 1/3, 2/10 dagegen wird gespeichert als 1/5. "Rationale Arithmetik" heißt dann "Bruchrechnung".
Diese Arithmetik mit beliebiger Genauigkeit ist schon in manchen Programmiersprachen eingebaut, in manchen seit Jahrzehnten, also ein alter Hut,
auch für C++ gibt es Bibliotheken dafür, und letztendlich unvermeidlich, falls Rundungsfehler inakzeptabel sind wie in der Zahlentheorie.
-
!rr!rr_. schrieb:
schonwiedarausgeflogngrrr schrieb:
(arme 8bit-Welt, konnte immer nur mit Zahlen bis 255 bwz +127 oder -127 rechnen...;))
ganz so schlimm wars nicht, in 8 Bit kommt man (mit 2er Komplement Darstellung) von +127 bis -128
FF
807F
-
!rr!rr_. schrieb:
"Rationale Arithmetik" heißt dann "Bruchrechnung".
Wann denn nicht?
-
z.B. wenn man mit Fließpunkt oder fixpunkt rechnet, wg. Rundungsfehler:
rational: 1/1 + 1/1000000000000000000000000000000000000000000000000000000000 = 10000000000000000000000000000000000000000000000000000000001 /10000000000000000000000000000000000000000000000000000000000
fließpunkt: 1.0 + 0.000000000000000000000000000000000000000000000000000000001 = 1.0
-
Aha. Wo ist da die rationale Arithmetik, die keine Bruchrechnung ist?
-
Ich denke auch das man float und double nicht braucht. Ich bin auch der Meinung das man Referenzen nicht braucht man kann ja zeiger benutzen. Ich bin auch der Meinung dass man die CString library nicht braucht man kann doch seine eigene schreiben oder noch besser anständig mit charpointers umgehen. Ach und Mehrfachvererbung von C++ ist ja sowas von überflüssig.
Warum sollte man nicht alles ein bisschen komplizierter machen?
Dann hat man noch was zum denken!
Wenn programmieren sowieso zu einfach wird dann macht das am Schluss noch jeder Depp. AAAHHH schreckliche Welt alles Informatiker. HHHIIILLLFFFEEE! Ich bin voll deiner Meinung lasst uns noch ints und chars benutzen:)
-
Sorry habe das "nur" im letzten satz vergessen. Ich bin voll deiner Meinung lasst uns nur noch ints und chars benutzen:)
-
mngbd schrieb:
Aha. Wo ist da die rationale Arithmetik, die keine Bruchrechnung ist?
wie wo ist da die ??
< +, -, /, *, > ~~~ < rationale Arithmetik >
rechnet man mit unbegrenzter Genauigkeit, handelt es sich um echte Bruchrechnung.
rechnet man mit Fix- oder Fließpunkt oder sonstwie begrenzten Formaten, dann muß dann und wann gerundet werden, und aus der echten Bruchrechnung wird eine Näherungsrechnung.
- habe ich was übersehen, oder wieso ist das ein Diskussionsgegenstand