AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Genauigkeit von String to Single Konvertierung

Ein Thema von Harry Stahl · begonnen am 31. Mär 2020 · letzter Beitrag vom 19. Apr 2020
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.633 Beiträge
 
Delphi 12 Athens
 
#1

AW: Genauigkeit von String to Single Konvertierung

  Alt 3. Apr 2020, 11:09
Nein, Currency kennt nur 4 Nachkommastellen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
721 Beiträge
 
Delphi XE5 Professional
 
#2

AW: Genauigkeit von String to Single Konvertierung

  Alt 3. Apr 2020, 12:05
Es stellt sich die Frage, was für einen wichtiger ist: "Schnell" ein "bißchen falsches" Ergebnis zu bekommen, oder etwas langsamer ein Korrektes. Ich persönlich ziehe für meine numerischen Berechnungsroutinen immer den korrekten Weg vor und benutze durchweg die Multipräzisions-Arithmetik-Bibliotheken von Wolfgang Ehrhardt. Diese arbeiten intern mit zusammengesetzten, "sehr langen" Integer-Zahlen, wodurch die hohe Genauigkeit gewährleistet wird. Diese kostet allerdings oft viel Rechenzeit. Aber die heutigen Prozessoren merken das gar nicht…
Gruß, Andreas
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.355 Beiträge
 
Delphi 12 Athens
 
#3

AW: Genauigkeit von String to Single Konvertierung

  Alt 3. Apr 2020, 15:18
Ähnlich dem BCD, wo eine Ziffer in 4 Bit gespeichert ist, kann man auch gern mit Strings rechnen, also wo die Ziffern dann als Char jeweils 8 Byte belegen,
aber von der Mathematik dahinter gibt es praktisch keinen Unterschied.

https://www.delphipraxis.net/135492-...-math-lib.html
In Bezug auf die Speicherung von Dezimalzahlen gibt es da natürlich keine Probleme,
aber auch im 10er-System gibt es die selben Beschränkung, wie im 2er.

1 / 3 lässt sich nicht "genau" speichern, selbst wenn man hierfür eine Milliarde Dezimalstellen nach dem Komma verwendet. (2 GB)

0.333333333.................



Aber man könnte hier mit Exponenten arbeiten, wenn die Exponenten beliebig groß sind und man die Basis nicht auf Biegen und Brechen normieren muß, dann ließe sich praktisch alles Speichern.
Ebenfalls könnte man Bruchzahlen speichern, also direkt z.B. die 1 und die 3 von dem ⅓.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 3. Apr 2020 um 15:26 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.560 Beiträge
 
Delphi 12 Athens
 
#4

AW: Genauigkeit von String to Single Konvertierung

  Alt 4. Apr 2020, 22:11
Es stellt sich die Frage, was für einen wichtiger ist: "Schnell" ein "bißchen falsches" Ergebnis zu bekommen, oder etwas langsamer ein Korrektes. Ich persönlich ziehe für meine numerischen Berechnungsroutinen immer den korrekten Weg vor und benutze durchweg die Multipräzisions-Arithmetik-Bibliotheken von Wolfgang Ehrhardt. Diese arbeiten intern mit zusammengesetzten, "sehr langen" Integer-Zahlen, wodurch die hohe Genauigkeit gewährleistet wird. Diese kostet allerdings oft viel Rechenzeit. Aber die heutigen Prozessoren merken das gar nicht…
Gruß, Andreas
Gibt es hier irgendwo eine fertige Funktionssammlung (frei oder käuflich) zu beziehen?
Brauch ich im Moment zwar nicht, aber falls mal doch, wär es gut zu wissen.... (Tante Google hat da nichts ausgespuckt)
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.948 Beiträge
 
Delphi 12 Athens
 
#5

AW: Genauigkeit von String to Single Konvertierung

  Alt 4. Apr 2020, 22:53
Gibt es hier irgendwo eine fertige Funktionssammlung (frei oder käuflich) zu beziehen?
Brauch ich im Moment zwar nicht, aber falls mal doch, wär es gut zu wissen.... (Tante Google hat da nichts ausgespuckt)
Das liegt daran, dass der Autor leider verstorben ist und seine Webseite nicht mehr online ist.
Es gibt aber einen Snapshot von der Seite:
https://github.com/moe123/www.wolfgang-ehrhardt.de
Und dort auch die entsprechende Bibliothek:
https://github.com/moe123/www.wolfga...2018-11-27.zip
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#6

AW: Genauigkeit von String to Single Konvertierung

  Alt 5. Apr 2020, 10:08
Und es liegt auch daran, dass für geschätzt 99,999% aller Anwendungsfälle die normalen Gleitkommazahlen ausreichen (ggf. mit Rundung). Es macht einfach keinen Unterschied, ob die Linie genau 3 Pixel breit ist oder ob sie erst 3,00000015 pixel breit sein sollte und dann gerundet wird.

Was mir so als use case in den Sinn kommt ist typischerweise Finanzen, Kryptographie und Tschenrechner.

Soweit ich mich erinnere, haben die Leute sich bei WinXP ein bisschen über den Taschenrechner lustig gemacht, weil der eben auch solche Ungenauigkeiten hatte. Dann hat MS dem Taschenrechner in Win7 einen ordentliche, arbitrary precision Kern verpasst. Fast keiner hat's gemerkt oder gelobt (Aber inzwischen kann der TR auch sowas wie 1200000000000000000047 - 1200000000000000000000 rechnen)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.355 Beiträge
 
Delphi 12 Athens
 
#7

AW: Genauigkeit von String to Single Konvertierung

  Alt 5. Apr 2020, 11:00
[deleted]
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
721 Beiträge
 
Delphi XE5 Professional
 
#8

AW: Genauigkeit von String to Single Konvertierung

  Alt 5. Apr 2020, 15:49
Zitat:
typischerweise Finanzen, Kryptographie und Tschenrechner
in Bezug auf Finanzen reichen die Festkommatypen (ala Currency) meistens aus,
so lange Einem die hunderstel Cent (4 Nachkommastellen) und einige 100 Billion Euro ausreichen.
Das stimmt nicht ganz: Rundungsfehler durch die binäre Zahlenkodierung, die begrenzte Wortlänge des Prozessors etc. lauern auf uns fast überall. Hier habe ich ein anschauliches kaufmännisches Beispiel (= recht einfache Berechnungen) aus dem Buch: Muller + Brisebarre + de Dinechin et al.: Handbook of Floating-Point Arithmetic. Boston: Birkhäuser, 2010, (ISBN 978-0-8176-4 704-9) S. 10 - 11:

Das Angebot der "Chaotic Bank Society":
Sie zahlen zunächst e - 1 $ auf Ihr Konto ein, wobei e = 2. 7182818… ist die Basis der natürlichen Logarithmen. Im ersten Jahr nehmen wir 1 $ von Ihrem Konto als Bearbeitungsgebühren. Das zweite Jahr ist besser für Sie: Wir multiplizieren Ihr Kapital mit 2, und wir nehmen 1 $ Bearbeitungsgebühren von Ihrem Konto. Das dritte Jahr ist sogar noch besser: Wir vervielfachen Ihr Kapital durch 3, und wir nehmen immer nur noch 1 $ an Bearbeitungsgebühren. Und so weiter: Im n-ten Jahr wird Ihr Kapital mit n multipliziert, und wir nehmen nur 1 Dollar Gebühren. Interessant, nicht wahr?
Wie hoch wäre Ihr Kapital nach 25 Jahren?

Versucht mal obiges Angebot mit Single-, Double-, Currency- und Extended-Genauigkeit zu testen. Und dann können wir uns gemeinsam wundern.
Gruß, Andreas
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)

Geändert von Andreas13 ( 5. Apr 2020 um 15:59 Uhr)
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.490 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Genauigkeit von String to Single Konvertierung

  Alt 6. Apr 2020, 12:25
Und es liegt auch daran, dass für geschätzt 99,999% aller Anwendungsfälle die normalen Gleitkommazahlen ausreichen (ggf. mit Rundung).
...
Was mir so als use case in den Sinn kommt ist typischerweise Finanzen, Kryptographie und Tschenrechner.
Und geschätzt 99,8% aller Anwendungsfälle benötigen gar keine Gleitkommazahlen. (Wenn nicht TDateTime als double definiert wäre )

Und wer bei Finanzen Fließkomma nimmt gehört virtuell ...
  Mit Zitat antworten Zitat
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
721 Beiträge
 
Delphi XE5 Professional
 
#10

AW: Genauigkeit von String to Single Konvertierung

  Alt 6. Apr 2020, 17:31
Und es liegt auch daran, dass für geschätzt 99,999% aller Anwendungsfälle die normalen Gleitkommazahlen ausreichen (ggf. mit Rundung).
...
Was mir so als use case in den Sinn kommt ist typischerweise Finanzen, Kryptographie und Tschenrechner.
Und geschätzt 99,8% aller Anwendungsfälle benötigen gar keine Gleitkommazahlen. (Wenn nicht TDateTime als double definiert wäre )

Und wer bei Finanzen Fließkomma nimmt gehört virtuell ...
Ja, aber es kommt wirklich darauf an, für welche Zielgruppe man programmiert. Aber in der Technik, der gesamten Industrie, Ingenieur- und Naturwissenschaften braucht man zuverlässige Fließkomma-Berechnungen.
Mir fällt dazu ein Zitat vom "The Father of Floating Point" Prof. Dr. William Kahan (University of California, Berkeley) ein, der bekanntlich der Hauptarchitekt der Standards IEEE 754, IEEE 854 und IEEE 754r für die binären Gleitkommazahlen ("floating-point") ist, nach welchen die meisten unserer heutigen Prozessoren arbeiten. Er schrieb bereits im Jahre 1998 in einem Workshop-Beitrag über Dr. James Gosling (= "Dr. Java"), den Entwickler der Programmiersprache Java:
We agree with James Gosling about some things like ...
...
"95% of the folks out there are completely clueless about floating-point."
(James Gosling, 28 Feb. 1998)
(Maybe more than 95% ?: 1 March 1998, W. Kahan)
...
Das ist schon 22 Jahre her. Vielleicht wären heutzutage 99 % treffender...
Andreas
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz