Forum: Programmieren allgemein
Delphi
by gammatester,
19. Jun 2018
'Der Computer' ist was? Manche Programme rechnen symbolisch mit rationalen Zahlen, nativ ist iA nur Integer- und Fließkommaarithmetik vorhanden, alles andere ist, wenn überhaupt, nur mit Software implementiert.
Richtig: Die Darstellung von rationalen Zahlen braucht keine Stellen nach dem Komma, da sie ja Paare von Integer sind. Und genau da liegt ein viel größeres Problem: Die Größe von Zähler...
Forum: Programmieren allgemein
Delphi
by gammatester,
18. Jun 2018
Inwischen habe ich die neuen Versionen von AMath/DAMath und MPArith hochgeladen und deshalb wieder etwas mehr Zeit. Vielleicht sollten wir allerdings einen eigenen Thread aufmachen oder ein Moderator splittet diesen.
Ich will niemanden auf Glatteis führen, und jeder mag iszero/samevalue benutzen. Nur bitte: der direkte Vergleich kann gar kein Problem sein, weil iszero/samevalue genau solche...
Forum: Programmieren allgemein
Delphi
by gammatester,
18. Jun 2018
NoGo sagt wer? Die gleichen Leute, die mit SameValue/Iszero arbeiten und nicht wissen, was sie da programmiert? Wieso fällt man mit if Pi=3 auf die Nase? Ein Kompiler, der da true liefert, gehört die Tonne.
Zum Vergleich auf 0. Hier ist doch überhaupt kein Problem beim direkten Vergleich, wobei iszero für kleine Werte fehlerhaft ist. Ich kann mich an keine Rechnung errinnern, wo 'zufällig' 0...
Forum: Programmieren allgemein
Delphi
by gammatester,
18. Jun 2018
Habe ich auch nie behauptet. Was ich gesagt habe, ist, daß sie überflüssig sind und zu Fehlern verleiten, weil gedacht werden könnte, man habe die Probleme der Fließkommaarithmetik damit magisch in den Griff bekommen.
Also für mich ist value1=0 oder value1=value2 viel besser lesbar und überhaupt nicht hingeklatscht. Über die Verwantwortung der Programmiers, ob die eine oder die andere...
Forum: Programmieren allgemein
Delphi
by gammatester,
18. Jun 2018
Sag ich ja: Wenn man keine Ahnung hat benutzt man die Default-Werte und macht (wie Borland/Emba beim sinh) haarsträubende Fehler. Wenn man weiß, wo die Probleme sind, dann braucht man diese Routinen nicht.
Im übrigen ist 1e-20 geradezu erschreckend groß im Vergleich zu 1e-300 oder 1e-4000.
Forum: Programmieren allgemein
Delphi
by gammatester,
18. Jun 2018
Das sind genau die Routinen für Leute, die keine/wenig Ahnung haben. Nach der simplen Methode liefert iszero(Planckkonstante)=true oder iszero(Gravitationkonstante)=true. Außerdem ist iszero für solche Feautures wie sinh(1e-20)=0 verantwortlich, wohingegen sin(1e-20) richtig = 1e-20 ist.
{$apptype console}
uses
Math;
const
g: single = 6.67e-11;
h: extended = 6.63e-34;
begin
...
Forum: Programmieren allgemein
Delphi
by gammatester,
18. Jun 2018
C++ rechnet wohl immer double (aber legt mich nicht fest).
Delphi-32-Bit rechnet intern mit extended.
Delphi-64-Bit via SSE immer als double.
Forum: Programmieren allgemein
Delphi
by gammatester,
18. Jun 2018
Und warum sollte 0.68 nicht in den Single-Bereich passen? Es ist nur nicht exakt darstellbar, ebenso wenig wie als Double oder Extended. Also ist das Gerede vom falschen Datentyp noch nicht mal 10% der Wahrheit.
Querfrage: Warum ist 0.000000000931322574615478515625 exakt als Single dastellbar, obwohl es 21 signifikante Stellen hat?
Wenn der Exponent 0 ist hat man subnormale Zahlen, und im...
Forum: Programmieren allgemein
Delphi
by gammatester,
17. Jun 2018
Freut mich zu lesen, mein Edit hatte sich mit Deiner Antwort gekreuzt.
Forum: Programmieren allgemein
Delphi
by gammatester,
17. Jun 2018
Versuch mal Folgendes:tmpsingle := rScale - SCALE_DEFAULT;
if tmpsingle > 0 then ...
oder wahrscheinlich besser definiere SCALE_DEFAULT als singleconst
SCALE_DEFAULT: single = 0.68;