![]() |
Warum kann delphi net rechnen ? Unerklärliches Problem
Hey leute ,
hab folgendes Programmiert :
Delphi-Quellcode:
Mir geht es darum das ich die Zahl erraten kann an die jemand denkt. Das Problem ist wenn ich auf den Größer Button klicke kommt 125 bei raus aber wenn ich es nachrechne MÜSSEN es 75 sein. Was ist da falsch?LG
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) BTGroesser: TButton; BTKleiner: TButton; Label1: TLabel; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; procedure FormCreate(Sender: TObject); procedure BTGroesserClick(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; RateZahl:Integer; RateZahlMin:Integer; RateZahlMax:Integer; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin RateZahl:=50; RateZahlMin:=0; RateZahlMax:=100; Edit1.Text:=IntToStr(RateZahl); Edit2.Text:=IntToStr(RateZahlMax); Edit3.Text:=IntToStr(RateZahlMin); end; procedure TForm1.BTGroesserClick(Sender: TObject); begin RateZahlMin:=RateZahl; RateZahl:=RateZahl+Round(RateZahlMax-RateZahlMin/2); Edit1.Text:=IntToStr(RateZahl); Edit2.Text:=IntToStr(RateZahlMax); Edit3.Text:=IntToStr(RateZahlMin); end; end. |
AW: Warum kann delphi net rechnen ? Unerklärliches Problem
Klammern vergessen?
Delphi-Quellcode:
Übrigens: wieso verwendest Du Fließkommaoperationen bei ganzen Zahlen?
RateZahl:=RateZahl+Round((RateZahlMax-RateZahlMin)/2);
[edit] Sry, Willkommen in der DP :dp: [/edit] |
AW: Warum kann delphi net rechnen ? Unerklärliches Problem
Oh mist stimmt ja Punkt vor Strich rechnung. Was ist eine Fließkommaoperation?
|
AW: Warum kann delphi net rechnen ? Unerklärliches Problem
Zahlen mit Nachkommastellen.
|
AW: Warum kann delphi net rechnen ? Unerklärliches Problem
Integeroperationen sind schneller und optimaler, wenn man eh bei den Integern bleibt.
Delphi-Quellcode:
Wenn (RateZahlMax - RateZahlMin) positiv ist und es gerundet werden soll, dann muß man einfach nur noch die Hälfte des Teilers dazurechnen, vor dem Teilen.
RateZahl := RateZahl + Trunc((RateZahlMax - RateZahlMin) / 2);
RateZahl := RateZahl + (RateZahlMax - RateZahlMin) div 2;
Delphi-Quellcode:
RateZahl := RateZahl + Round((RateZahlMax - RateZahlMin) / 2);
RateZahl := RateZahl + (RateZahlMax - RateZahlMin + 1) div 2; |
AW: Warum kann delphi net rechnen ? Unerklärliches Problem
Und was ändert das?
|
AW: Warum kann delphi net rechnen ? Unerklärliches Problem
Im 1. Fall entsgehen gebrochene Zahlen als Zwischenergebnis, doieses muss wieder zu einer Ganzzahl gewandelt werden, was u.U. zu einem anderen Ergebnis führen kann
|
AW: Warum kann delphi net rechnen ? Unerklärliches Problem
Stand doch da:
Zitat:
|
AW: Warum kann delphi net rechnen ? Unerklärliches Problem
---
|
AW: Warum kann delphi net rechnen ? Unerklärliches Problem
Das wurde doch schon hinreichend geklärt ... und der TE hatte es auch schon verstanden ...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:24 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