WinFuture-Forum.de: Inno Setup (Delphi Code) kann nicht richtig rechnen - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Software
Seite 1 von 1

Inno Setup (Delphi Code) kann nicht richtig rechnen Progress := X*(100/(ArrayLength+1));


#1 Mitglied ist offline   Druidialkonsulvenz 

  • Gruppe: aktive Mitglieder
  • Beiträge: 106
  • Beigetreten: 12. September 10
  • Reputation: 3
  • Geschlecht:Männlich

  geschrieben 27. Februar 2016 - 05:08

Wenn
ein Array eine Länge von 26 hat (0 - 25)
und
ArrayLength := GetArrayLength(Parameters)-1;

also 25

und
X = 24
also fast durch ist,

dann sollte
Progress := X*(100/(ArrayLength+1));


96,153846153846153846153846153846 ergeben, da
Progress := 24*(100/(25+1));


aber es kommt das raus:
Progress = 75

?

Kommt Inno Setup nicht mit verklammerten Berechnungen klar?

Wie soll ein Setup jemals einen korrekten Fortschrittsbalken anzeigen, wenn Inno Setup vor einem Taschenrechner kapitulieren muss?


Edit:

bestätigt, wenn ich
alength := ArrayLength+1;

einbaue

dann ergibt
Progress := X*100/alength;


96!

Freundlicherweise gerundet.
0

Anzeige



#2 Mitglied ist offline   RalphS 

  • Gruppe: VIP Mitglieder
  • Beiträge: 8.895
  • Beigetreten: 20. Juli 07
  • Reputation: 1.126
  • Geschlecht:Männlich
  • Wohnort:Zuhause
  • Interessen:Ja

geschrieben 27. Februar 2016 - 09:53

Also so richtig komme ich da jetzt nicht auf die Werte die Du da hast mit den Zahlen die Du da angibst. :huh:

Aber ich schätze mal, daß Du schlicht ganzzahlig statt gleitkommazahlig dividierst: 100/26 macht 3 und das mal 24 gibt 72 (bzw mal 25 halt 75).
"If you give a man a fish he is hungry again in an hour. If you teach him to catch a fish you do him a good turn."-- Anne Isabella Thackeray Ritchie

Eingefügtes Bild
Eingefügtes Bild
0

#3 Mitglied ist offline   Druidialkonsulvenz 

  • Gruppe: aktive Mitglieder
  • Beiträge: 106
  • Beigetreten: 12. September 10
  • Reputation: 3
  • Geschlecht:Männlich

geschrieben 27. Februar 2016 - 23:47

Nun, nicht ICH dividiere dann ganzzahlig, sondern der Compiler.

Aber nur dann, wenn ich Klammern verwende.

Wenn ich die Formel auseinandernehme und einzelne Variablen vorher OHNE Klammern errechne und daraus eine neue Formel baue, ist es plötzlich gleitkommazahlig.

Das kann kein Feature sein, es ist mindestens eine Schwäche, wenn nicht ein Bug.
0

Thema verteilen:


Seite 1 von 1

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0