AGB  ·  Datenschutz  ·  Impressum  







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

Zahlen mit Komma vergleichen

Ein Thema von turbocounter · begonnen am 11. Nov 2007 · letzter Beitrag vom 12. Nov 2007
Antwort Antwort
Seite 1 von 3  1 23      
turbocounter

Registriert seit: 19. Aug 2007
21 Beiträge
 
#1

Zahlen mit Komma vergleichen

  Alt 11. Nov 2007, 18:56
Hallo,
ich habe diese Funktion:
Delphi-Quellcode:
function praemientester(summ1,summ2:double):boolean;
var summe: double;
begin
  summe:=summ1 + summ2;
  If (summe = 0.11) or (summe = 0.33) or (summe = 0.55) or (summe = 0.77) or
     (summe = 0.99)or (summe = 1.11) or (summe = 1.33) or (summe = 1.55) or
     (summe = 1.77) or (summe = 1.99)Then Result:=True
                                   Else Result:=False;

end;
Warum liefert sie nie true zurück? Selbst wenn die Summe 0,11 ist, dann funktioniert das nicht. Liegt das an den Datentypen/Gleitkommadarstellung? Wie ändere ich das oder wie nehme ich nur die Zahlen nach dem Komma und mach dann mit den integer zahlen ne addition. Mit frac() funktionierts nicht, da bleibt die 0 stehen.

Danke
Counter
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Zahlen mit Komma vergleichen

  Alt 11. Nov 2007, 18:59
Wie in meiner PN beschrieben, könnte es so gehen:
Delphi-Quellcode:
function praemientester(summ1,summ2:double):boolean;
var summe: double;
begin
  summe:=summ1 + summ2;
  Result := trunc(summe * 100) in [11,33,55,77,99,111,133,155,177,199];
end;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
hathor
(Gast)

n/a Beiträge
 
#3

Re: Zahlen mit Komma vergleichen

  Alt 11. Nov 2007, 19:02
Multipliziere doch die Summe einfach mit 100 und vergleiche mit dem Hundertfachen.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Zahlen mit Komma vergleichen

  Alt 11. Nov 2007, 19:06
Zitat von hathor:
Multipliziere doch die Summe einfach mit 100 und vergleiche mit dem Hundertfachen.
Siehe #2
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: Zahlen mit Komma vergleichen

  Alt 11. Nov 2007, 19:10
Hi,

Ich habs so gemacht. Also so ähnlich wie es schon gesagt wurde.

Delphi-Quellcode:
function Nachkomma(R: Single): Integer;
begin
  Result := Round(R*100 - Floor(R)*100);
end;

function IsPair(x1,x2: Single): Boolean;
begin
  Result := Nachkomma((NachKomma(x1) + Nachkomma(x2)) /100) in [11,33,55,77,99];
end;
Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
turbocounter

Registriert seit: 19. Aug 2007
21 Beiträge
 
#6

Re: Zahlen mit Komma vergleichen

  Alt 11. Nov 2007, 19:30
Danek euch, Deddy das von dir geht leider nicht, auch nicht das geänderte:
Delphi-Quellcode:
function praemientester(summ1,summ2:double):boolean;
var summe: double;
begin
  summe:=summ1 + summ2;
  If (trunc(summe) * 100) = 77
   Then
   Result:=True;
end;

ich probiermal das vom General
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Zahlen mit Komma vergleichen

  Alt 11. Nov 2007, 19:34
Hi,

das kann auch nicht gehen, weil du schreibst:
trunc(summe)*100 Denn so werden erst die Kommastellen abgeschnitten und dann mit 100 multipliziert. Als Beispiel mit 1,77:
trunc(1,77) = 1
1*100 = 100 != 177
Du musst zuerst mit 100 multiplizieren und dann die Stellen abschneiden.
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Zahlen mit Komma vergleichen

  Alt 11. Nov 2007, 19:37
Benutzt für Finanzmathematik doch bitte den Datentyp Currency, der immer genau 4 Nachkommanstellen hat.

Alle Fließkommadatentypen sind immer von Rundungsproblemen betroffen.

EDIT: Ach ja, das stinkt gefährlich nach BWInf Afg.1
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
grenzgaenger
(Gast)

n/a Beiträge
 
#9

Re: Zahlen mit Komma vergleichen

  Alt 11. Nov 2007, 20:01
kenn zwar die aufgabe nicht. aber ist schon merkwürdig, dass heut alle mit 10 gleitkomma zahlen handieren ...
Zitat:
98.30
55.88
9.64
83.96
35.88
7.64
73.82
54.85
63.07
3.98
  Mit Zitat antworten Zitat
turbocounter

Registriert seit: 19. Aug 2007
21 Beiträge
 
#10

Re: Zahlen mit Komma vergleichen

  Alt 11. Nov 2007, 20:06
warum funktioniert der Quelltext im Post von DeddyH nicht?
Man kann wahrscheinlich keine doubles vergleichen.

General, dein Quelltext geht bei mir nicht, des sagt das Floor ein nich deklarierter Bezeichner ist.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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 08:10 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