![]() |
Gleitkommazahlen runden?
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 |
Re: Gleitkommazahlen runden?
einfach mal 1000000 nehmen und dann runden und dann wieder durch 1000000 ^^
|
Re: Gleitkommazahlen runden?
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?
|
Re: Gleitkommazahlen runden?
Zitat:
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
Delphi-Quellcode:
x:= round(x*1000000)/1000000;
|
Re: Gleitkommazahlen runden?
Ein Gleitkommawert wird (stark vereinfacht) so gespeichert:
Code:
also das:
Integerwert für Wert der Zahl | Integerwert der soviel heisst wie: mal zwei hoch mich
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). |
Re: Gleitkommazahlen runden?
Zitat:
|
Re: Gleitkommazahlen runden?
Hallo,
zum Runden auf eine bestimmte Anzahl von Nachkommastellen werfe ich mal ![]() Gruß xaromz |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:57 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