Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Nur die Zahl hinter dem Komma auswählen (https://www.delphipraxis.net/96279-nur-die-zahl-hinter-dem-komma-auswaehlen.html)

Darksniper 21. Jul 2007 11:21


Nur die Zahl hinter dem Komma auswählen
 
Hi

Wie kann man die Zahl hinter dem komma auswählen.

Also wenn z.B. 12,45 da steht will ich von dieser Zahl nur 0,45 auswählen.

Wie geht das?

mkinzler 21. Jul 2007 11:24

Re: Nur die Zahl hinter dem Komma auswählen
 
Delphi-Quellcode:
Frac(Zahl)
liefert dir den Nachkommaanteil einer Zahl

Darksniper 21. Jul 2007 11:26

Re: Nur die Zahl hinter dem Komma auswählen
 
danke aber gibt das jetzt 0,45 oder 45 wieder?

CalganX 21. Jul 2007 12:31

Re: Nur die Zahl hinter dem Komma auswählen
 
Ansonsten nimm doch Trunc und ziehe den Wert von Trunc von deinem Ausgangswert ab.

Torpedo 21. Jul 2007 12:38

Re: Nur die Zahl hinter dem Komma auswählen
 
Zitat:

Zitat von Darksniper
danke aber gibt das jetzt 0,45 oder 45 wieder?

Wie wärs mit Ausprobieren ;)

Darksniper 21. Jul 2007 17:40

Re: Nur die Zahl hinter dem Komma auswählen
 
Zitat:

Zitat von CalganX
Ansonsten nimm doch Trunc und ziehe den Wert von Trunc von deinem Ausgangswert ab.

meinst du so?

Delphi-Quellcode:
procedure TForm3.Button1Click(Sender: TObject);
var a,b,c : Integer;
begin
 a:=StrtoInt (edit1.text);
 b:=a div 60 div 60;
 c:=b-Trunc(b);
 Label1.caption:= FloattoStr (c);
end;
komischerweise wird das immer null :gruebel:

Ultimator 21. Jul 2007 17:42

Re: Nur die Zahl hinter dem Komma auswählen
 
div ist auch eine Division, bei der Ganzzahlen rauskommen, du hast also einfach keine Nachkommastellen ;)

Darksniper 21. Jul 2007 17:45

Re: Nur die Zahl hinter dem Komma auswählen
 
:wiejetzt:

:?: eine division bei der keine kommazahlen enstehen :?:

DeddyH 21. Jul 2007 17:50

Re: Nur die Zahl hinter dem Komma auswählen
 
Man kennt das noch aus der Grundschule: 7/3 = 2 Rest 1. Also ergibt 7 DIV 3 2 und 7 MOD 3 1(MOD steht für Modulo, also den Rest bei ganzzahliger Division).

Martin K 21. Jul 2007 17:50

Re: Nur die Zahl hinter dem Komma auswählen
 
Ja, genau so ist es: Ganzzahldivision.
Das ist grundlegend, wenn du z.B. nur mit Integern rechnest.
div gibt den ganzzahligen Wert der Division zurück, mod den Rest der Division.
Für Division mit Gleitkommazahlen ist / gedacht.

Darksniper 21. Jul 2007 18:08

Re: Nur die Zahl hinter dem Komma auswählen
 
also ich will eine division mit einem ergebniss mit komma
in dem fall muss ich ja / einsetzen

dann würde das ja dann so aussehen

Delphi-Quellcode:
procedure TForm3.Button1Click(Sender: TObject);
var a,b,c : Integer;
begin
a:=StrtoInt (edit1.text);
b:=a / 60 / 60;
c:=b-Trunc(b);
Label1.caption:= FloattoStr (c);
end;
jedoch tritt dann dieser Fehler auf

b:=a / 60 / 60;
[Fehler] Unit3.pas(32): E2010 Inkompatible Typen: 'Integer' und 'Double'

Martin K 21. Jul 2007 18:13

Re: Nur die Zahl hinter dem Komma auswählen
 
Wenn man Division mit Integern (= Ganzzahlen) macht, ist dafür div gedacht, da Integer eben ganze Zahlen sind und nichts nach den Komma darstellen können.
Für "normale" Divisionen sind Gleitkommazahlen da (schau mal in der Delphi-Hilfe unter "Reelle Typen").
b müsste halt eine Gleitkommazahl sein!

DeddyH 21. Jul 2007 18:14

Re: Nur die Zahl hinter dem Komma auswählen
 
Klar:
Delphi-Quellcode:
var a,b,c : Integer;
Änder das mal ab:
Delphi-Quellcode:
var a,b,c : Double;
[EDIT]Quatsch! So wäre es ausreichend:
Delphi-Quellcode:
var a, b: integer;
    c: Double;
[/EDIT]

Darksniper 21. Jul 2007 18:16

Re: Nur die Zahl hinter dem Komma auswählen
 
und was macht Double?

DeddyH 21. Jul 2007 18:17

Re: Nur die Zahl hinter dem Komma auswählen
 
Double "macht" nichts, es ist ein Fließkommatyp.

Darksniper 21. Jul 2007 18:18

Re: Nur die Zahl hinter dem Komma auswählen
 
:?: Fließkommatyp :?:

Martin K 21. Jul 2007 18:21

Re: Nur die Zahl hinter dem Komma auswählen
 
Wie gesagt, schau mal unter reelle Typen.
Typen, die Gleitkommazahlen darstellen können, sind z.B.:
- Single
- Double
- Real
- Extended

Single ist etwas ungenau bei vielen Nachkommastellen, Double ist da schon genauer.
Extended ist vor allem für sehr große Zahlen geeignet.

Real ist der wohl gebräuchlichste Typ, ist in seiner aktuellen Implementierung identisch mit Double.
Mein Tipp: verwende Real!

Fließkommatyp = Typen für Gleitkommazahlen, also Zahlen, die auch was nach dem Komma darstellen können!

DeddyH 21. Jul 2007 18:33

Re: Nur die Zahl hinter dem Komma auswählen
 
Ich kenne die Hilfe von Delphi 2005 nicht, aber unter dem Suchbegriff "elementare Datentypen" sollte sich eine ausführliche Beschreibung finden lassen.

Martin K 21. Jul 2007 18:37

Re: Nur die Zahl hinter dem Komma auswählen
 
Delphi-Hilfe
Reelle Typen
Ein reeller Typ definiert eine Menge von Zahlen, die in Gleitkommanotation dargestellt werden können. Die folgende Tabelle enthält die Bereiche und Speicherformate der fundamentalen reellen Typen in Win32.

Fundamentale reelle Typen in Win32:
Code:
Typ     Bereich                        Signifikante Größe
                                         Stellen      in Byte
Real48   -2,9 x 10^39 .. 1,7 x 10^38     11-12          6
Single  -1,5 x 10^45 .. 3,4 x 10^38     7-8            4
Double  -5,0 x 10^324 .. 1,7 x 10^308   15-16          8
Extended -3,6 x 10^4951 .. 1,1 x 10^4932 10-20         10
Comp    -2^63+1 .. 2^63 1               10-20          8 
Currency -922337203685477.5808 ..       10-20          8
          922337203685477.5807
Der generische Typ Real entspricht in seiner aktuellen Implementierung dem Typ Double.

dominikkv 21. Jul 2007 19:28

Re: Nur die Zahl hinter dem Komma auswählen
 
du solltest dir mal die standarttypen genauer anschauen :zwinker:
In einen Integer passen nur ganze Zahlen rein: zB 5 oder 87 oder auch -44
In einen reelen Typ (zB Double, Extended etc) passen auch kommazahlen rein: zB 4,36 oder 45,98 oder -445,144

Der Operator div gibt eine ganze Zahl aus, zB 9 div 2 = 4
Der Operator / gibt eine Kommazahl aus, zB 9 / 2 = 4,5

Da Integer und 4,5 nicht zueinander passen kommt dieser Fehler.

dajuhsa 21. Jul 2007 20:02

Re: Nur die Zahl hinter dem Komma auswählen
 
da wir gerade beim thema sind:
ich habe mal ne funktion gesehen die immer abrundet.
das ist doch im prinzip dasselbe wie trunc oder ?

CalganX 21. Jul 2007 20:05

Re: Nur die Zahl hinter dem Komma auswählen
 
Ja.

dajuhsa 21. Jul 2007 20:12

Re: Nur die Zahl hinter dem Komma auswählen
 
dann ist diese funktion wohl sehr sinnlos

Martin K 21. Jul 2007 20:24

Re: Nur die Zahl hinter dem Komma auswählen
 
Zitat:

Zitat von CalganX
Ja.

Nein.

Trunc rundet immer gegen 0, also schneidet den Teil hinter dem Komma einfach ab:
Trunc(2.7) = 2
Trunc(-2.7) = -2

Floor rundet immer ab, also gegen die nächste kleinere ganze Zahl:
Floor(2.7) = 2
Floor(-2.7) = -3

CalganX 21. Jul 2007 20:26

Re: Nur die Zahl hinter dem Komma auswählen
 
:wall: Wer braucht schon negative Zahlen? :mrgreen:

Hast natürlich Recht.

dajuhsa 21. Jul 2007 20:34

Re: Nur die Zahl hinter dem Komma auswählen
 
:wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall:
HMPF! hab ich nie dran gedacht, obwohl es so logisch is
:wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall:

Martin K 21. Jul 2007 20:42

Re: Nur die Zahl hinter dem Komma auswählen
 
So sieht die Floor-Funktion in der Unit Math übrigens aus :mrgreen:
Delphi-Quellcode:
function Floor(const X: Extended): Integer;
begin
  Result := Integer(Trunc(X));
  if Frac(X) < 0 then
    Dec(Result);
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:25 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