AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Gleitkommazahlen Exponentialschreibweise unerwünscht
Thema durchsuchen
Ansicht
Themen-Optionen

Gleitkommazahlen Exponentialschreibweise unerwünscht

Ein Thema von LuCSteR · begonnen am 10. Jul 2009 · letzter Beitrag vom 20. Jul 2009
Antwort Antwort
LuCSteR

Registriert seit: 16. Sep 2005
168 Beiträge
 
#1

Gleitkommazahlen Exponentialschreibweise unerwünscht

  Alt 10. Jul 2009, 13:31
Hi,

ich möchte einfach abs(0.00007957 - 0.00008172) = 2,149995735E-6
alle 3 Variablen sind als real definiert.
Wird der Wertebereich überschritten oder warum zeigt er mir die zahl nur in Exponentialschreibweise an?
Wie kann ich den längeren Wert mit den 0en ausgeben lassen?

grüße
  Mit Zitat antworten Zitat
Reinhard Kern

Registriert seit: 22. Okt 2006
772 Beiträge
 
#2

Re: Gleitkommazahlen Exponentialschreibweise unerwünscht

  Alt 10. Jul 2009, 14:02
Zitat von LuCSteR:
Hi,

ich möchte einfach abs(0.00007957 - 0.00008172) = 2,149995735E-6
alle 3 Variablen sind als real definiert.
Wird der Wertebereich überschritten oder warum zeigt er mir die zahl nur in Exponentialschreibweise an?
Wie kann ich den längeren Wert mit den 0en ausgeben lassen?

grüße
Hallo,

das ist ein für Fliesskommazahlen typischer Rundungsfehler, exakt wäre als Ergebnis -0.00000215 (macht mein Texas-Taschenrechner übrigens richtig). Dadurch wird erst das Ausgabeformat überschritten, hat mich gleich gewundert, dass sowas bei einer Subtraktion vorkommt. Der Taschenrechner von XP arbeitet übrigens auch exakt.

Ich finde den Fehler unzulässig, aber machen kannst du nicht viel, wenn dein Programm so rechnet. Du könntest es höchstens mit höherer Genauigkeit probieren, obwohl das eigentlich keinen Sinn macht, denn schliesslich subtrahierst du 2 4stellige Zahlen, das darf nicht schiefgehen.

Vielleicht findet sich hier im Forum ja noch ein Spezialist für Borland-Arithmetik, die hat schon so ihre Eigenheiten.

Gruss Reinhard
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

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

Re: Gleitkommazahlen Exponentialschreibweise unerwünscht

  Alt 10. Jul 2009, 14:07
Die Genauigkeitz hat nichts mit der Schreibweise zu tun - mein Taschenrechner zeigt auch -2,15*10^-6 an

Wie man das jetzt hinbekommt, dass statt der Exponentialschreibweise Nullen angezeigt werden, weis ich jetzt auch nicht - evtl. kann Format das, aber keine Garantie
  Mit Zitat antworten Zitat
Benutzerbild von markus5766h
markus5766h

Registriert seit: 5. Mär 2009
Ort: Hamburg
569 Beiträge
 
Delphi XE8 Professional
 
#4

Re: Gleitkommazahlen Exponentialschreibweise unerwünscht

  Alt 10. Jul 2009, 14:09
Hallo,
nimm Extended, dann funktionierts (Genauigkeit)

für die Ausgabe wirst Du Dir wohl eine Funktion schreiben müssen:
-Umwandeln in String
-entspr. dem Exponenten gleiche Anzahl Nullen voranstellen
-und das Komma verschieben
-10er Potenz "abschneiden"

'was Anderes fällt mir auf die Schnelle nicht ein
Markus H.
  Mit Zitat antworten Zitat
LuCSteR

Registriert seit: 16. Sep 2005
168 Beiträge
 
#5

Re: Gleitkommazahlen Exponentialschreibweise unerwünscht

  Alt 10. Jul 2009, 14:14
Habe die 3 Variablen mal als extended definiert.
--> 2,15E-6
Sieht schon besser aus, und die genaugkeit reicht mir auch (ob da nun noch 99999..bla blub kommt.. ^^)
Müsst mir quasi ne Funktion schreiben die, 0en einfügt, das Komma an der richtigen Stelle setzt, und hinten E-6 abschneided. geht ja alles mit Stringoperationen. Kein Problem. Aber iwie ziemlich umständlich. Dachte es gibt vll ne fertige Funktion/Prozedur die mir die nicht exponentielle Darstellung ausgibt.

Hatte auch an Format gedacht, aber bis jetzt nix vernünftiges zusammenbekommen. Geht aber bestimmt.
  Mit Zitat antworten Zitat
Tyrael Y.

Registriert seit: 28. Jul 2003
Ort: Stuttgart
1.093 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Gleitkommazahlen Exponentialschreibweise unerwünscht

  Alt 10. Jul 2009, 14:17
Guck dir mal FormatFloat in der Delphi Hilfe an.
Levent Yildirim
Erzeugung von Icons aus Bildern:IconLev
  Mit Zitat antworten Zitat
LuCSteR

Registriert seit: 16. Sep 2005
168 Beiträge
 
#7

Re: Gleitkommazahlen Exponentialschreibweise unerwünscht

  Alt 10. Jul 2009, 14:19
ja hab ich auch schon gesehen -,--
Sollte ich mir vll doch nochmal genau anschaun. Wobei ich Lazarus nutze und auf diesen Link zurückgreife.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: Gleitkommazahlen Exponentialschreibweise unerwünscht

  Alt 10. Jul 2009, 18:25
Zitat von markus5766h:
Hallo,
nimm Extended, dann funktionierts (Genauigkeit)
Hier ja, aber das ist auch keine Garantie, denn...

... floating Point Zahlen stellen eine Dezimalzahl als Summe der Reihe (b_i*1/(2^i)) dar, wobei b_i das i.te Bit der Mantisse darstellt. Es ist logisch, das nicht alle Dezimalzahlen so exakt darzustellen sind.

Das Ein (TI)-Taschenrechner das richtig ausrechnet, liegt vermutlich daran, das er mit BCD-Arithmetik arbeitet. Das ist langsamer, aber eben genau (bis auf Rundungsfehler der letzten Stelle).
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
LuCSteR

Registriert seit: 16. Sep 2005
168 Beiträge
 
#9

Re: Gleitkommazahlen Exponentialschreibweise unerwünscht

  Alt 20. Jul 2009, 08:59
Habe nun endlich was fertiges gefunden. Mit der Funktion FloatToStrF lässt sich einiges in der Ausgabe tun.
  Mit Zitat antworten Zitat
Antwort Antwort


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 07:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz