![]() |
Teilen
Hallo,
habe da ein Problem wo ich überhaupt nicht weiter komme... ich gebe eine Länge in ein Eingabefeld ein mit : Laenge := strtofloat (editlaenge.Text); denn wird die Anzahl der Zellen eines Regals folgendermaßen berechnet: Anzahlzellen4 := trunc((Laenge-Staenderbreite) / (Zellenbreite4+Staenderbreite)); Ständerbreite und Zellenbreite4 sind folgendermaßen berechnet: Staenderbreite := 0.1; Zellenbreite4 := ( 2 * Staenderabstand ) + ( 3 * Palettenabstand )+ ( 4 * Palettenbreite ); die variablen sind wie folgt definiert: Zellenbreite4,Staenderbreite, Palettenabstand : single ; Anzahlzellen : integer ; mein problem ist, das das ergebnis der anzahlzellen4 bei einer Längenangabe von 3,8 = 0 ist, obwohl eigentlich 1 rauskommen müsste. denn: Länge-Staenderbreite ergibt 3,7 und Zellenbreite4 + Staenderbreite ergibt auch 3,7. wenn ich mir das ergebnis ohne trunc anzeigen lasse, kommt ein ergebnis von 0,999999945 raus und denn macht trunc da natürlich eine o von. kann mir einer sagen, warum 0,999999945 statt 1 rauskommt. liegt das evtl an den typen der variablen? danke im vorraus. |
Re: Hilfe
Lass mal das ganze mit Trunc etc weg.. Anstatt Single könntest du auch Integer nehmen...Und dann "StrToInt"
|
Re: Hilfe
ich muss aber trunc machen, da man z.b. keine 4,3 zeilen haben kann.
intger kann ich auch nicht nehmen, da wir auch kommawerte eingeben können. ich versteh halt nicht wie er auf die 0,999999945 kommen kann. wenn man 3,7 / 3,7 hat |
Re: Hilfe
Ersetz das mal:
Delphi-Quellcode:
durch:
Anzahlzellen4 := trunc((Laenge-Staenderbreite) / (Zellenbreite4+Staenderbreite));
Delphi-Quellcode:
Anzahlzellen4 := trunc((Laenge-Staenderbreite) DIV (Zellenbreite4+Staenderbreite));
|
Re: Hilfe
das geht nicht, div geht doch nur bei integer oder?
und die zahlen müssen single sein, da sie kommazahlen sind |
Re: Hilfe
Zitat:
|
Re: Hilfe
Versuch es doch mal mit Round()
oder besser gleich mit Format(), da wird gerundet und gleichzeitig in String konvertiert. |
Re: Hilfe
div geht nur bei ganzen zahlen, real hatten wir vorher auch gehabt und da war das gleiche problem.
round können wir nicht nehmen, da wir immer auf die ganze zahl abrunden müssen. |
Re: Hilfe
Na, dann Format()
|
Re: Hilfe
Zitat:
Beispiel: 1 --> Round(0.5) = 1 Beispiel: 1.1 --> Round(0.6) = 1 Beispiel: 1.9 --> Round(1.4) = 1 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:32 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