AGB  ·  Datenschutz  ·  Impressum  







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

LOW oder High für NICHT-INTEGER-Typen

Ein Thema von QuickAndDirty · begonnen am 22. Jan 2007 · letzter Beitrag vom 22. Jan 2007
Antwort Antwort
Seite 1 von 3  1 23      
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#1

LOW oder High für NICHT-INTEGER-Typen

  Alt 22. Jan 2007, 13:47
Wie schon die Überschrift sagt gibt es sowas wie LOW und HIGH auch für Typen
Wie TDatetime, Double, Single andere Gleitkommazahlen?

Wenn nicht, wie Sollte ich so eine Funktion Schreiben?
1. Aus der Hilfe die Zahlen als Konstanten verbauen.
2. Einen Puffer der richtigen Größe anlegen, ihn mit dem Richtigen Bitmuster beschreiben und dann Typcasten.
2.b Wie ist in den Double, Single, etc. Exponent und Mantisse auf die Bytes verteilt?
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: LOW oder High für NICHT-INTEGER-Typen

  Alt 22. Jan 2007, 13:52
Was soll dann z.B. für TDatetime rauskommen?
LOW/HIGH hat m.E. nichts mit dem belegten Speicherplatz zu tun.
Markus Kinzler
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#3

Re: LOW oder High für NICHT-INTEGER-Typen

  Alt 22. Jan 2007, 13:56
Das Höchste oder das Niedrigste darstellbare Datum natürlich.
Ich brauche es für einen Range auf einen kombinierten Schlüssel wobei ich nur das erste Feld einschränken möchte.
Leider liefert mir der Range leere Mengen wenn nicht auch das 2. Feld des Schlüssels vernünftig gesetzt wird.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: LOW oder High für NICHT-INTEGER-Typen

  Alt 22. Jan 2007, 14:02
High and low ist nur für ordinale Typen (Zahlen) möglich.

Bei Fließkommazahlen würd ich mir einfach Konstanten ausrechnen:
Double: 1 VZ + 11 Exp + 52 Mantisse
Single: 1 VZ + 8 Exp + 23 Matisse

Aber aufpassen, wo beim Exponenten die "Mitte" ist und dann gibts noch Inifinity und NaN.
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#5

Re: LOW oder High für NICHT-INTEGER-Typen

  Alt 22. Jan 2007, 14:13
Funktioniert infinity in delphi23?
Würde dann nicht auch -infinity bis +infinity gehen?
Und kennen die BDE treiber INFINITY?

Wieso beim Exponenten auf die Mitte aufpassen?
Müste der nicht bei
(Beispiel 8 Bit Exponent )
mantisse * 2 ^ 00000000 = mantisse * 2 ^ 0 sein
und bei
mantisse * 2 ^ 11111111 = mantisse * 2 ^ -127 sein
und bei
mantisse * 2 ^ 01111111 = mantisse * 2 ^ 126 sein

Oder funktioniert er anders? Der Exponent ist doch ein Integer-Typ oder?

Oh ich glaube zu wissen was du mit Mitte meintest. Du meintest das , die höchste positive Zahl +1 in die kleinste negative überläuft.

Wo sind in den Doublewerten die Werte NAN und Infinity untergebracht?
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: LOW oder High für NICHT-INTEGER-Typen

  Alt 22. Jan 2007, 14:33
Ja, das meinte ich mit Mitte.


nach IEEE (e=Exponent; m=Mantisse; v=Vorzeichen):

Single
NaN: e=255 und m<>0 und v->egal
+Inf: e=255 und m=0 und v=0
-Inf: e=255 und m=0 und v=1
+0 : e=0 und m=0 und v=0
-0 : e=0 und m=0 und v=1
Für alle 0<e<255 ziehst du einfach 127 vom Exponenten ab und rechnest, wie du es schon getan hast.
Für e=0 und m<>0 ist der Exponente (auch) -126

Double
NaN: e=2047 und m<>0 und v->egal
+Inf: e=2047 und m=0 und v=0
-Inf: e=2047 und m=0 und v=1
+0 : e=0 und m=0 und v=0
-0 : e=0 und m=0 und v=1
Für alle 0<e<2047 ziehst du einfach 1023 vom Exponenten ab und rechnest, wie du es schon getan hast.
Für e=0 und m<>0 ist der Exponente (auch) -1022

Alle Angaben ohne Gewähr


Was die einzelnen Programme (z.B. BDE) aus dem Standard machen ist ihre Sache (oder auch deine). Ich "als BDE" würde die Bits einfach so weitergeben..
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#7

Re: LOW oder High für NICHT-INTEGER-Typen

  Alt 22. Jan 2007, 14:43
Zitat von sirius:
Alle Angaben ohne Gewähr
Besten Dank. Das ist ja voll der Service hier.

Zitat von sirius:
Was die einzelnen Programme (z.B. BDE) aus dem Standard machen ist ihre Sache (oder auch deine). Ich "als BDE" würde die Bits einfach so weitergeben..
Ich weiß was du meinst... ich "als BDE" hätte mich nach dem ich gecancelt wurde in ein OPEN-Source Projekt verwandelt...auch wenn es peinlich geworden wäre....wirklich.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: LOW oder High für NICHT-INTEGER-Typen

  Alt 22. Jan 2007, 14:50
Zitat von QuickAndDirty:
Ich weiß was du meinst... ich "als BDE" hätte mich nach dem ich gecancelt wurde in ein OPEN-Source Projekt verwandelt...auch wenn es peinlich geworden wäre....wirklich.



Um noch zu Extended zu kommen. Der Standard lässt da (in Schranken) variable Breiten für e und m zu.

Ich glaube Delphi nimmt für den Exponenten 15, dann sicherlich wieder "nur" 1 fürs Vorzeichen und der Rest, also *grübel* 64 Bits für die Mantisse. NaN und Infinity wirds da in ähnlicher Form geben.

Edit: Auch ja, und für TDateTime...
Für Delphi ist ja der Tag 0 am 30.12.1899, TDateTime=Double; Und für Delphi gibts kein "vor Christus"


Edit: peinlicher Rechenfehler korrigiert
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: LOW oder High für NICHT-INTEGER-Typen

  Alt 22. Jan 2007, 15:08
Aber Delphi kann doch sicher vorchristliche Daten darstellen...
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#10

Re: LOW oder High für NICHT-INTEGER-Typen

  Alt 22. Jan 2007, 15:09
Man sollte sich vor Augen halten wofuer Low und High gedacht sind. Sie sollen die obere und untere Grenze fuer Arrays liefern (ob statische oder dynamische). Da Arrays aber auch mit Ordinaltypen deklariert werden koennen, muss man Low und High auch auf diesen definieren.
Die gleichen Extremwerte gibt es fuer die Integer-Typen auch als Konstanten wie MaxInt. Fuer die genannten anderen Typen genuegen Konstanten (gibt es da nicht schon vordefinierte?).
  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 19: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