AGB  ·  Datenschutz  ·  Impressum  







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

Gleitkommazahlen runden?

Ein Thema von HorstBS · begonnen am 11. Mär 2006 · letzter Beitrag vom 11. Mär 2006
Antwort Antwort
HorstBS

Registriert seit: 10. Jan 2006
21 Beiträge
 
#1

Gleitkommazahlen runden?

  Alt 11. Mär 2006, 17:04
Hallo,

gibt es eine Möglichkeite Gleitkommatzahlen zu verkleinern, indem man sie z.b. bis auf die letzten 6 Stellen hinterm Komma verkürzt?

arbeite mit Zahlen wie 0,435345346456654 und bekomme immer die fehlermeldung das die Zahl zu groß sei wenn ich sie mathematisch verwenden will.

beim runden hab ich ja das Problem das evtl auf 1 oder 0 gerundet wird.

jemand ne idee?
danke
Horst BS
  Mit Zitat antworten Zitat
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#2

Re: Gleitkommazahlen runden?

  Alt 11. Mär 2006, 17:07
einfach mal 1000000 nehmen und dann runden und dann wieder durch 1000000 ^^
Willy Scheibel
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#3

Re: Gleitkommazahlen runden?

  Alt 11. Mär 2006, 17:08
Single/Double/Extended hat immer eine festgelegte Mantissenlänge, da kann nichts "zu lang werden". Wie heißt der Fehler genau/wie sieht die Codestelle aus?
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Gleitkommazahlen runden?

  Alt 11. Mär 2006, 17:12
Zitat:
arbeite mit Zahlen wie 0,435345346456654 und bekomme immer die fehlermeldung das die Zahl zu groß sei wenn ich sie mathematisch verwenden will.
Welche Fehlermeldung und was verstehst du unter 'mathematisch verwenden'?

Um an die ersten sechs Stellen zu kommen, kannst du das Komma per Mulitplikation mit 10^6 nach rechts schieben, dann runden und per Muliplikation mit 10^-6 wieder zurückschieben.
Also x:= round(x*1000000)/1000000;
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Gleitkommazahlen runden?

  Alt 11. Mär 2006, 17:16
Ein Gleitkommawert wird (stark vereinfacht) so gespeichert:

Code:
Integerwert für Wert der Zahl | Integerwert der soviel heisst wie: mal zwei hoch mich
also das:

4 - 6

würde heissen: 4 * 2^6 also 256. Zu groß kann die Zahl nicht werden, da für die einzelnen Bereiche immer nur eine bestimmte Anzahl von Bytes definiert wird. Zu groß wird die Zahl erst, wenn der hintere Bereich zu groß wird, und das ist erst bei Zahlen WEIT jenseits von 10^10 (bei Extended bei ungefähr 10^5000).
Michael Enßlin
Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#6

Re: Gleitkommazahlen runden?

  Alt 11. Mär 2006, 17:28
Zitat von ichbins:
Code:
Integerwert für Wert der Zahl
Ein Integer ist es auf keinen Fall. Zuerst einmal ist es natürlich nur ein Bitstrom. Auf deiner Abstraktionsebene wäre es eine normalisierte Binärzahl. Da eine normalisierte Binärzahl immer mit 1,... beginnt, kann diese Stelle gleich weggelassen werden (-> "Hidden Bit").
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#7

Re: Gleitkommazahlen runden?

  Alt 11. Mär 2006, 18:07
Hallo,

zum Runden auf eine bestimmte Anzahl von Nachkommastellen werfe ich mal Delphi-Referenz durchsuchenRoundTo aus der Unit Math in die Runde.

Gruß
xaromz
  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 23:52 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