AGB  ·  Datenschutz  ·  Impressum  







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

Teilen

Ein Thema von TimoB · begonnen am 1. Okt 2008 · letzter Beitrag vom 2. Okt 2008
Antwort Antwort
Seite 1 von 2  1 2      
TimoB

Registriert seit: 7. Sep 2008
Ort: Schiffdorf
7 Beiträge
 
#1

Teilen

  Alt 1. Okt 2008, 19:58
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.
  Mit Zitat antworten Zitat
BullsEye

Registriert seit: 8. Sep 2007
Ort: Werlte
872 Beiträge
 
Delphi 7 Personal
 
#2

Re: Hilfe

  Alt 1. Okt 2008, 20:03
Lass mal das ganze mit Trunc etc weg.. Anstatt Single könntest du auch Integer nehmen...Und dann "StrToInt"
  Mit Zitat antworten Zitat
TimoB

Registriert seit: 7. Sep 2008
Ort: Schiffdorf
7 Beiträge
 
#3

Re: Hilfe

  Alt 1. Okt 2008, 20:07
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
  Mit Zitat antworten Zitat
BullsEye

Registriert seit: 8. Sep 2007
Ort: Werlte
872 Beiträge
 
Delphi 7 Personal
 
#4

Re: Hilfe

  Alt 1. Okt 2008, 20:10
Ersetz das mal:

Anzahlzellen4 := trunc((Laenge-Staenderbreite) / (Zellenbreite4+Staenderbreite)); durch:

Anzahlzellen4 := trunc((Laenge-Staenderbreite) DIV (Zellenbreite4+Staenderbreite));
  Mit Zitat antworten Zitat
TimoB

Registriert seit: 7. Sep 2008
Ort: Schiffdorf
7 Beiträge
 
#5

Re: Hilfe

  Alt 1. Okt 2008, 20:11
das geht nicht, div geht doch nur bei integer oder?
und die zahlen müssen single sein, da sie kommazahlen sind
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#6

Re: Hilfe

  Alt 1. Okt 2008, 20:22
Zitat von TimoB:
das geht nicht, div geht doch nur bei integer oder?
und die zahlen müssen single sein, da sie kommazahlen sind
DIV sollte überall gehen. Ersetze mal Single durch Real.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#7

Re: Hilfe

  Alt 1. Okt 2008, 20:23
Versuch es doch mal mit Round()
oder besser gleich mit Format(), da wird gerundet und gleichzeitig in String konvertiert.
Ralph
  Mit Zitat antworten Zitat
TimoB

Registriert seit: 7. Sep 2008
Ort: Schiffdorf
7 Beiträge
 
#8

Re: Hilfe

  Alt 1. Okt 2008, 20:29
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.
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#9

Re: Hilfe

  Alt 1. Okt 2008, 20:31
Na, dann Format()
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.606 Beiträge
 
#10

Re: Hilfe

  Alt 1. Okt 2008, 20:47
Zitat von TimoB:
round können wir nicht nehmen, da wir immer auf die ganze zahl abrunden müssen.
Auf ganze Zahl abrunden: Round(Zahl - 0.5);

Beispiel: 1 --> Round(0.5) = 1
Beispiel: 1.1 --> Round(0.6) = 1
Beispiel: 1.9 --> Round(1.4) = 1
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:36 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