![]() |
Re: Hilfe
Hallo TimoB, gib deinem Beitrag bitte einen aussagekräftigen Titel entsprechend den Forenregeln :-)
|
Re: Teilen
sorry wegen derm themenbezeichnung.
das round (zahl - 0,5) kann mir auch nicht weiterhelfen. z.b. 0,99999955 -0,5 = 0,49999955 und damit auch 0 |
Re: Teilen
der neue Titel ist ja auch nicht gerade grob das Problem beschreibend :roll: Aber wenigstens war der Wille vorhanden?!
|
Re: Teilen
Ich begreife nicht ganz, was hier so schwer fällt.
Und insbesondere nicht, warum du es nicht mit Format() versuchst! Also, hier mal ein Beispiel
Delphi-Quellcode:
Abgesehen davon, dass 3.7 / 3.7 tatsächlich 1 ergibt, kann mit Format() dein Rundungsproblem gelöst werden :warn:
label1.caption:=floattostr(3.7/3.7); // label zeigt 1
label2.caption:=floattostr(3.7/3.70101010); // label zeigt 0,9997270.... label3.Caption:=format('%2.0f',[3.7/3.70101010]) // label zeigt 1 Korrekter, als den Rundungsfehler am Ende zu korrigieren, wäre es, die Berechnung schrittweise durchzugehen und die Zwischenergebnisse zu überprüfen. Vielleicht muss ja ein krummer Wert 'rauskommen, vielleicht aber auch nicht. Gute Nacht für Heute |
Re: Hilfe
Zitat:
@Topic: IMHO liegt das ganze an der Ungenauigkeit der Gleitkommazahlen. Wenn sich 3,7 mit dem Datentyp nicht genau darstellen lassen, kommt eben auch nicht 1 heraus. 2 mögliche Lösungen:
[edit]Aber taaktaaks Lösung ist einfacher und vermutlich die passende für dein Problem.,gibt aber im manchen Fällen, z.B. 2.25, Kommazahlen aus, nicht wie sinnvollerweise gefordert, Ganzahlen.[/edit] MfG, Bug |
Re: Teilen
Zitat:
Das ist einfach nur wieder ein Fall von "kenne deine Typen, und wisse um ihre Schwächen" ;). Wenn es auf hundertprozentige Genauigkeit ankommt, kommst du um Ganzzahltypen nicht herum. Man büßt dafür allerdings die maximale Anzahl der Nachkommastellen ein, und handelt sich sobald mehr als nur Addieren/Subtrahieren vor kommt erneut Fehler durch die nötige Rundung ein. Manchmal ist es aber auch schon genug, die Rechnungen umzustellen, anders zu klammern, und generell Operatoren zu minimieren. Ob und wo das reicht ist aber von Fall zu Fall sehr unterschiedlich. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:22 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