Größtmöglichen Float-Wert ermitteln
Größtmöglichen Float-Wert ermitteln
am 25.10.2006 17:20:09 von Thomas Mlynarczyk
Halllo,
Wie kann ich die größte (finite) Float-Zahl ermitteln, die PHP auf einer
gegebenen Plattform verarbeiten kann? Für Integer gibt es ja PHP_INT_MAX,
aber für Float?
Gruß,
Thomas
Re: Größtmöglichen Float-Wert ermitteln
am 25.10.2006 22:25:08 von Ulf Kadner
Thomas Mlynarczyk schrieb:
> Wie kann ich die größte (finite) Float-Zahl ermitteln,
Es gibt dafür keine vordefinierten Wert zur Nutzung in PHP.
Das Manual sagt:
| The size of a float is platform-dependent, although a maximum of
| ~1.8e308 with a precision of roughly 14 decimal digits is a common
| value (that's 64 bit IEEE format).
Guckst Du hier:
http://www.php.net/manual/en/language.types.float.php
MfG, Ulf
Re: Größtmöglichen Float-Wert ermitteln
am 26.10.2006 00:11:25 von Thomas Mlynarczyk
Also sprach Ulf Kadner:
> Das Manual sagt:
[Float-Größe ist systemabhängig]
Das war mir schon klar. Aber gibt es nicht irgendeinen genialen, kurzen
Codeschnipsel, der austestet, wie groß ein Float auf dem *aktuellen* System
maximal werden kann und mir diesen Maximalwert zurückliefert?
Gruß,
Thomas
Re: Größtmöglichen Float-Wert ermitteln
am 26.10.2006 03:57:17 von Johannes Vogel
Hi Thomas
Thomas Mlynarczyk wrote:
> Wie kann ich die größte (finite) Float-Zahl ermitteln, die PHP auf einer
> gegebenen Plattform verarbeiten kann? Für Integer gibt es ja PHP_INT_MAX,
> aber für Float?
Welchen Zweck verfolgst du, mit so grossen Zahlen rumzuspielen? Die
Genauigkeit ist ja da IMHO sowieso unbrauchbar.
Johannes
Re: Größtmöglichen Float-Wert ermitteln
am 26.10.2006 13:58:39 von Thomas Mlynarczyk
Also sprach Johannes Vogel:
> Welchen Zweck verfolgst du, mit so grossen Zahlen rumzuspielen?
Z.B.: Eine Funktion soll u.a. prüfen, ob eine gegebene Zahl in einem
bestimmten Bereich liegt (min...max). Es soll aber auch die Möglichkeit
bestehen, nur eine der beiden Bereichsgrenzen (oder auch gar keine)
anzugeben. Dann wäre es am einfachsten, die fehlende Bereichsgrenze mit dem
größt- bzw. kleinstmöglichen Float-Wert vorzubelegen und den Algorithmus so
zu durchlaufen, als wären beide Bereichsgrenzen angegeben worden. Oder: Ich
habe eine Berechnung auszuführen, bei der in einem Zwischenschritt
möglicherweise zu große Float-Werte entstehen können. Ich muß also z.B.
verzweigen: if ( $x > MAX_FLOAT / 2 ) { blah } else { blupp }. Davon
abgesehen: ist es nicht eigentlich selbstverständlich, die Grenzen des
Systems zu kennen?
> Die Genauigkeit ist ja da IMHO sowieso unbrauchbar.
Es geht ja nicht um Kommastellen, sondern um die Frage, in welchem Format
(wieviele Bits für Mantisse u. Exponent etc.) das System Floats intern
abspeichert und welche größte positive (und kleinste negative) Zahl ich
folglich abspeichern kann.
Gruß,
Thomas
Re: Größtmöglichen Float-Wert ermitteln
am 26.10.2006 14:00:29 von Claus Reibenstein
Johannes Vogel schrieb:
> Thomas Mlynarczyk wrote:
>
>> [...] größte (finite) Float-Zahl ermitteln, [...]
>
> Welchen Zweck verfolgst du, mit so grossen Zahlen rumzuspielen? Die
> Genauigkeit ist ja da IMHO sowieso unbrauchbar.
Die Genauigkeit hat mit der Größe bei Float absolut nichts zu tun. Die
ist im gesamten Zahlenbereich gleich.
Gruß. Claus
Re: Größtmöglichen Float-Wert ermitteln
am 26.10.2006 15:13:27 von Niels Braczek
Thomas Mlynarczyk schrieb:
> Es geht ja nicht um Kommastellen, sondern um die Frage, in welchem Form=
at=20
> (wieviele Bits für Mantisse u. Exponent etc.) das System Floats in=
tern=20
> abspeichert und welche gröÃte positive (und kleinste negative=
) Zahl ich=20
> folglich abspeichern kann.
IEEE 754:
single: Exponent 8 Bit
Als darstellbarer Zahlenbereich ergibt sich:
±2^-126 â=A6 ±2^128 ~ ±1,18·10^â=9238 â=
=A6 ±3,40·10^+38
double: Exponent 11 Bit
Als darstellbarer Zahlenbereich ergibt sich:
±2^-1022 â=A6 ±2^1024 ~ ±2,23·10^â=92308 =E2=
¦ ±1,80·10^+308
extended: Exponent 15 Bit
Als darstellbarer Zahlenbereich ergibt sich:
±2^-16382 â=A6 ±2^16394 ~
Andere Formen sind nicht gebräuchlich. Im Prinzip reicht es also, ob=
du
4*10^38 setzen kannst; wenn ja, hast du doubles, wenn nein nur singles
zur Verfügung. Im Falle von extended (wird praktisch nur intern f=C3=
=BCr
Zwischenergebnisse verwendet) brauchst du dir gar keine Gedanken zu
machen; der Bereich ist sicherlich gröÃer als der Durchmesser d=
es
Universums in Ã
ngstrøm.
MfG
Niels
--=20
| http://www.kolleg.de · Das Portal der Kollegs in Deutschland |=
| http://www.bsds.de · BSDS Braczek Software- und DatenSysteme |=
| Webdesign · Webhosting · e-Commerce · Joomla! Content Ma=
nagement |
------------------------------------------------------------ ------
Re: Größtmöglichen Float-Wert ermitteln
am 26.10.2006 19:54:33 von Thomas Mlynarczyk
Also sprach Niels Braczek:
> IEEE 754
Ich kann also praktisch davon ausgehen, daß alle Systeme sich an diese Norm
halten?
> Andere Formen sind nicht gebräuchlich. Im Prinzip reicht es also, ob
> du 4*10^38 setzen kannst; wenn ja, hast du doubles, wenn nein nur
> singles zur Verfügung.
Könnte ich die pack/unpack-Funktionen nutzen, um den jeweiligen Maximalwert
"bitgenau" in eine Variable zu bringen? Indem ich z.B. ein geeignetes
Bitmuster erzeuge, welches den höchstmöglichen Float-Wert repräsentiert und
per unpack() in eine Float-Variable entpacke?
> Im Falle von extended (wird praktisch nur
> intern für Zwischenergebnisse verwendet) brauchst du dir gar keine
> Gedanken zu machen; der Bereich ist sicherlich größer als der
> Durchmesser des Universums in Ångstrøm.
Zweifellos. Ich habe ja auch gar keine Angst, daß der zur Verfügung stehende
Float-Bereich nicht reichen könnte. Ich will einfach nur wissen, wie groß er
exakt(!) ist.
Gruß,
Thomas
Re: GrößtmöglichenFloat-Wert ermitteln
am 26.10.2006 20:13:04 von daniel.gorski
[Thomas Mlynarczyk in de.comp.lang.php.misc]
>> Im Falle von extended (wird praktisch nur intern für Zwischenergebnisse
>> verwendet) brauchst du dir gar keine Gedanken zu machen; der Bereich ist
>> sicherlich größer als der Durchmesser des Universums in Ångstrøm.
> Zweifellos. Ich habe ja auch gar keine Angst, daß der zur Verfügung
> stehende Float-Bereich nicht reichen könnte. Ich will einfach nur wissen,
> wie groß er exakt(!) ist.
Hilft dir vielleicht das Wissen, wann eine Float aus ihrem
Darstellungsbereich purzelt? Zur Not könnte man sich damit der Grenze grob
nähern.
isValidFloat(1.8E308);
isValidFloat(1.8E307);
function isValidFloat($f) {
echo $f === INF ? 'Ooops' : 'OK';
}
?>
mfg dtg
Re: Größtmöglichen Float-Wert ermitteln
am 27.10.2006 09:42:48 von Thomas Mlynarczyk
Also sprach Daniel T. Gorski:
> Hilft dir vielleicht das Wissen, wann eine Float aus ihrem
> Darstellungsbereich purzelt? Zur Not könnte man sich damit der Grenze
> grob nähern.
Danke für das Codebeispiel. Allerdings will ich mich nicht nur "grob" der
Grenze nähern, sondern sie ganz exakt ermitteln. Ich schätze, daß ich dazu
tatsächlich Bitmuster generieren und sie dann PHP zur Interpretation als
Floats "vorlegen" muß.
Gruß,
Thomas
Re: Größtmöglichen Float-Wert ermitteln
am 27.10.2006 10:08:00 von Claus Reibenstein
Thomas Mlynarczyk schrieb:
> [...] daß ich dazu
> tatsächlich Bitmuster generieren und sie dann PHP zur Interpretation als
> Floats "vorlegen" muß.
Und wie willst Du das machen? Ich kenne keinen Weg, PHP dazu zu
veranlassen, einen Int als Float zu interpretieren. Du?
Gruß. Claus
Re: Größtmöglichen Float-Wert ermitteln
am 27.10.2006 10:25:59 von Patrick Rauscher
Claus Reibenstein schrieb:
> Thomas Mlynarczyk schrieb:
>
>> [...] daß ich dazu
>> tatsächlich Bitmuster generieren und sie dann PHP zur Interpretation als
>> Floats "vorlegen" muß.
>
> Und wie willst Du das machen? Ich kenne keinen Weg, PHP dazu zu
> veranlassen, einen Int als Float zu interpretieren. Du?
>
> Gruß. Claus
Man könnte settype ( http://de.php.net/manual/de/function.settype.php )
verwenden:
$zahl = 5;
settype($zahl, float);
var_dump($zahl);
Re: Größtmöglichen Float-Wert ermitteln
am 27.10.2006 11:47:38 von Claus Reibenstein
Patrick Rauscher schrieb:
> Claus Reibenstein schrieb:
>
>> Und wie willst Du das machen? Ich kenne keinen Weg, PHP dazu zu
>> veranlassen, einen Int als Float zu interpretieren. Du?
>
> Man könnte settype ( http://de.php.net/manual/de/function.settype.php )
> verwenden:
>
> $zahl = 5;
> settype($zahl, float);
> var_dump($zahl);
Ergibt eine Fehlermeldung (der zweite Parameter von settpye muss ein
String sein) und nach Korrektur das Ergebnis: float(5). Die Zahl ist
also von einer int(5) in eine float(5) konvertiert worden. War also nix.
Bitte das nächste Mal solche Empfehlungen vorher testen.
Gruß. Claus
Re: Größtmöglichen Float-Wert ermitteln
am 27.10.2006 11:55:59 von thorny
Claus Reibenstein schrieb:
> Patrick Rauscher schrieb:
>>>Und wie willst Du das machen? Ich kenne keinen Weg, PHP dazu zu
>>>veranlassen, einen Int als Float zu interpretieren. Du?
>>
>>Man könnte settype ( http://de.php.net/manual/de/function.settype.php )
>>verwenden:
>>
>>$zahl = 5;
>>settype($zahl, float);
>>var_dump($zahl);
>
> Ergibt eine Fehlermeldung (der zweite Parameter von settpye muss ein
> String sein) und nach Korrektur das Ergebnis: float(5). Die Zahl ist
> also von einer int(5) in eine float(5) konvertiert worden. War also nix.
>
> Bitte das nächste Mal solche Empfehlungen vorher testen.
Warum? Du wolltest, dass PHP einen Integerwert als Float interpretiert.
Mit dem beschriebenen Vorgehen hast den den Wert von Integer auf Float
geändert. PHP wird jetzt den Wert immer als Float behandeln. Das ist
genau das, was du wolltest. Ansonsten hast du dich missverständlich
ausgedrückt ;)
Gruß,
Torsten
Re: Größtmöglichen Float-Wert ermitteln
am 27.10.2006 12:39:22 von Thomas Mlynarczyk
Also sprach Claus Reibenstein:
> Und wie willst Du das machen? Ich kenne keinen Weg, PHP dazu zu
> veranlassen, einen Int als Float zu interpretieren. Du?
Ich dachte, mit den pack()-/unpack()-Funktionen sollte das irgendwie gehen.
Ich packe mein Bitmuster ein und lasse es als Float wieder auspacken. Ich
weiß nur nicht, wie ich das im Detail am besten hinkriege. Als Format kann
man sowohl "double" als auch "float" angeben, aber PHP kennt doch nur
/einen/ Gleitkommatyp?
Gruß,
Thomas
Re:
am 27.10.2006 13:07:24 von Patrick Rauscher
Thomas Mlynarczyk schrieb:
> Also sprach Claus Reibenstein:
>
>> Und wie willst Du das machen? Ich kenne keinen Weg, PHP dazu zu
>> veranlassen, einen Int als Float zu interpretieren. Du?
>
> Ich dachte, mit den pack()-/unpack()-Funktionen sollte das irgendwie gehen.
> Ich packe mein Bitmuster ein und lasse es als Float wieder auspacken. Ich
> weiß nur nicht, wie ich das im Detail am besten hinkriege. Als Format kann
> man sowohl "double" als auch "float" angeben, aber PHP kennt doch nur
> /einen/ Gleitkommatyp?
>
> Gruß,
> Thomas
>
>
ja, aber früher hieß der float double. also wird double bis heute wegen
der abwärtskompatibilität mitgeschleppt
prauscher
Re: Größtmöglichen Float-Wert ermitteln
am 27.10.2006 13:36:25 von Claus Reibenstein
Torsten Zuehlsdorff schrieb:
> Warum? Du wolltest, dass PHP einen Integerwert als Float interpretiert.
Du solltest den _ganzen_ Thread lesen. Dann würdest Du sehr schnell
merken, dass es um ganz etwas Anderes ging und dass _ich_ gar nichts wollte.
Außerdem verwechselst Du Interpretieren mit Konvertieren.
Gruß. Claus
Re: GrößtmöglichenFloat-Wert ermitteln
am 27.10.2006 13:44:12 von Sven Drieling
Thomas Mlynarczyk wrote:
Hallo,
> Zweifellos. Ich habe ja auch gar keine Angst, daß der zur Verfügu=
ng
> stehende Float-Bereich nicht reichen könnte. Ich will einfach nur w=
issen,
> wie groß er exakt(!) ist.
Richtig sinnvoll dürfte sich das IMHO nur mit einen passenden
Feature-Request lösen lassen (MAX_FLOAT, math_getmin('float'),
getminmaxvalues(array('float', 'int')) ...
=20
Man könnte sich per Teile und Herrsche über 10*10 geht, 100*100 ge=
ht,
x*x geht , y*y geht nicht mehr, ((y - x) / 2) * ((y - x) / 2)) geht, .=
....
rantasten.
Oder nur den Exponenten erhöhen. 300 oder auch 1000 einmalige
Schleifendurchläufe bei einer Installation dürften noch machbar se=
in.
=20
=20
tschuess
[|8:)
Re:
am 27.10.2006 13:47:35 von Niels Braczek
Patrick Rauscher schrieb:
Warum löschst du den Betreff?
> Thomas Mlynarczyk schrieb:
>> Als Format kann=20
>> man sowohl "double" als auch "float" angeben, aber PHP kennt doch nur =
>> /einen/ Gleitkommatyp?
> ja, aber früher hieà der float double. also wird double bis h=
eute wegen
> der abwärtskompatibilität mitgeschleppt
Das ist so nicht richtig. Float gibt es üblicherweise in drei Format=
en:
single (32 Bit), double (64 Bit) und extended (80 Bit). Als Derivate
existieren half (16 Bit) und quad (128 Bit).
In einer sauberen Implementierung steht double also für eine
float-Darstellung mit 64 Bit, die einen Wertebereich von ±2,23·=
10^â=92308 â=A6
±1,80·10^+308 abdeckt. Deshalb gibt es auch keine MAX_FLOAT-Kon=
stante.
Float hingegen steht dann für die Darstellung, die dem System am
nächsten ist (idR. vom Prozessor abhängig).
MfG
Niels
--=20
| http://www.kolleg.de · Das Portal der Kollegs in Deutschland |=
| http://www.bsds.de · BSDS Braczek Software- und DatenSysteme |=
| Webdesign · Webhosting · e-Commerce · Joomla! Content Ma=
nagement |
------------------------------------------------------------ ------
Re:
am 27.10.2006 17:20:20 von Sven Drieling
Niels Braczek wrote:
Hallo,
> Patrick Rauscher schrieb:
>> ja, aber früher hieß der float double. also wird double bis heut=
e wegen
>> der abwärtskompatibilität mitgeschleppt
>=20
> Das ist so nicht richtig. Float gibt es üblicherweise in drei Forma=
ten:
> single (32 Bit), double (64 Bit) und extended (80 Bit). Als Derivate
> existieren half (16 Bit) und quad (128 Bit).
Ja, aber das gilt für C. PHP unterscheidet nicht zwischen float und
double.
=20
is_double -- Alias of is_float()
So dass es in der zval-Struktur der Zend-Engine nur das double aus C g=
ibt
und für Integer das long - woraus sich die Abhängigkeiten für Za=
hlen vom
Compiler, der dazugehörigen Mathe-Bibliothek und der Hardware ergebe=
n.
> Deshalb gibt es auch keine MAX_FLOAT-Konstante.
Die #defines aus float.h könnten in PHP übernommen werden.
tschuess
[|8:)
Re: GrößtmöglichenFloat-Wert ermitteln
am 27.10.2006 21:48:48 von Sebastian Suchanek
Thus spoke Claus Reibenstein:
> Patrick Rauscher schrieb:
>> Claus Reibenstein schrieb:
>>
>>> Und wie willst Du das machen? Ich kenne keinen Weg, PHP
>>> dazu zu veranlassen, einen Int als Float zu
>>> interpretieren. Du?
>>
>> Man könnte settype verwenden:
>> [...]
>
> Ergibt eine Fehlermeldung (der zweite Parameter von settpye
> muss ein String sein) und nach Korrektur das Ergebnis:
> float(5). Die Zahl ist also von einer int(5) in eine
> float(5) konvertiert worden. War also nix.
Wie bitte? Das ist doch genau das, was wolltest. Oder hast Du
erwartet, daß da nach der Konvertierung float(4.99999999999)
'rauskommt?
Tschüs,
Sebastian
--
http://www.baumaschinen-modelle.net
http://www.schwerlast-rhein-main.de
Re: Größtmöglichen Float-Wert ermitteln
am 27.10.2006 23:16:56 von Niels Braczek
Sebastian Suchanek schrieb:
> Thus spoke Claus Reibenstein:
>> float(5). Die Zahl ist also von einer int(5) in eine
>> float(5) konvertiert worden. War also nix.=20
>=20
> Wie bitte? Das ist doch genau das, was wolltest. Oder hast Du=20
> erwartet, daß da nach der Konvertierung float(4.99999999999)=20
> 'rauskommt?
Das genau gar nicht das, worum es geht.
Es geht darum herauszufinden, welche Fließkommazahl durch ein bestimmte=
s
Bitmuster dargestellt wird. Bleiben wir bei dem Beispiel mit der 5:
Bitmuster: 0000 0000 0000 0000 0000 0000 0000 0101
Zuordnung: seee eeee emmm mmmm mmmm mmmm mmmm mmmm
Wegen E=3D0 und M>0 handelt es sich (in der Interpretation als Float) um
eine denormalisierte Zahl, hier +0,5*2^-126 ~ 5,8*10^-39
Mehr dazu bei Wikipedia: http://de.wikipedia.org/wiki/IEEE_754
Das gewünschte Ergebnis bei der Umwandlung der 5 wäre hier also
5,8*10^-39 gewesen.
MfG
Niels
--=20
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------
Re: Größtmöglichen Float-Wert ermitteln
am 27.10.2006 23:19:45 von Niels Braczek
Niels Braczek schrieb:
> Wegen E=3D0 und M>0 handelt es sich (in der Interpretation als Float) u=
m
> eine denormalisierte Zahl, hier +0,5*2^-126 ~ 5,8*10^-39
^^^
Bei diesem Wert mag ich mich geirrt haben; ändert aber nichts am Prinzi=
p.
MfG
Niels
--=20
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------
Re: Größtmöglichen Float-Wert ermitteln
am 28.10.2006 01:02:18 von Claus Reibenstein
Sebastian Suchanek schrieb:
> Thus spoke Claus Reibenstein:
>
>> Ergibt eine Fehlermeldung (der zweite Parameter von settpye
>> muss ein String sein) und nach Korrektur das Ergebnis:
>> float(5). Die Zahl ist also von einer int(5) in eine
>> float(5) konvertiert worden. War also nix.
>
> Wie bitte? Das ist doch genau das, was wolltest.
Nein, ist es nicht. Das hatte ich 8 Stunden vor Deinem Post in
<4qe99oFmlr40U1@individual.net> bereits klar gestellt.
Gruß. Claus
Re: Re:
am 29.10.2006 11:21:25 von Thomas Mlynarczyk
Also sprach Patrick Rauscher:
> ja, aber früher hieß der float double. also wird double bis heute
> wegen der abwärtskompatibilität mitgeschleppt
Für PHP sind also float und double identisch und bezeichnen das, was das
jeweilige System als maximalen Gleitkommatyp unterstützt?
Gruß,
Thomas
Re: Re:
am 29.10.2006 11:27:11 von Thomas Mlynarczyk
Also sprach Niels Braczek:
> In einer sauberen Implementierung steht double also für eine
> float-Darstellung mit 64 Bit, die einen Wertebereich von
> ±2,23·10^?308 . ±1,80·10^+308 abdeckt. Deshalb gibt es auch keine
> MAX_FLOAT-Konstante. Float hingegen steht dann für die Darstellung,
> die dem System am nächsten ist (idR. vom Prozessor abhängig).
In einer perfekten Programmiersprache hätte ich also einen Typ single und
einen Typ double und deren jeweilige Formate wären durch die IEEE-Norm
festgelegt und ich wüßte dann z.B. ganz genau, daß single eben 8 Bit für den
Exponenten und 23 Bit für die Mantisse hat und könnte mir damit meine
MAX_SINGLE Konstante definieren. In PHP habe ich "float" und das würde je
nach System einem der IEEE-Formate (single, double, ..., quad) entsprechen
und ich müßte praktisch nur diese Möglichkeiten austesten, um mein MAX_FLOAT
zu ermitteln?
Gruß,
Thomas
Re: Größtmöglichen Float-Wert ermitteln
am 29.10.2006 11:33:05 von Thomas Mlynarczyk
Also sprach Sven Drieling:
> Richtig sinnvoll dürfte sich das IMHO nur mit einen passenden
> Feature-Request lösen lassen (MAX_FLOAT, math_getmin('float'),
> getminmaxvalues(array('float', 'int')) ...
Und den gibt es ab PHP Version ...? Oder ist Derartiges überhaupt noch nicht
"in Planung"? Immerhin - wer PHP_INT_MAX sagt, sollte auch PHP_FLOAT_MAX
sagen...
> Oder nur den Exponenten erhöhen. 300 oder auch 1000 einmalige
> Schleifendurchläufe bei einer Installation dürften noch machbar sein.
Ja, es muß ja pro Maschine nur /einmal/ getestet werden und sollte sich dann
höchstens bei einem Prozessorwechsel ändern.
Gruß,
Thomas
Re: GrößtmöglichenFloat-Wert ermitteln
am 29.10.2006 16:14:12 von Sven Drieling
Thomas Mlynarczyk wrote:
Hallo,
> Also sprach Sven Drieling:
>=20
>> Richtig sinnvoll dürfte sich das IMHO nur mit einen passenden
>> Feature-Request lösen lassen (MAX_FLOAT, math_getmin('float'),
>> getminmaxvalues(array('float', 'int')) ...
>=20
> Und den gibt es ab PHP Version ...?
Meines Wissens nicht -> Feature-Request auf bugs.php.net eintragen.
tschuess
[|8:)
Re:
am 29.10.2006 17:09:02 von Niels Braczek
Thomas Mlynarczyk schrieb:
> Also sprach Niels Braczek:
>=20
>> In einer sauberen Implementierung steht double also für eine
>> float-Darstellung mit 64 Bit, die einen Wertebereich von
>> =B12,23=B710^?308 . =B11,80=B710^+308 abdeckt. Deshalb gibt es auch ke=
ine
>> MAX_FLOAT-Konstante. Float hingegen steht dann für die Darstellung,
>> die dem System am nächsten ist (idR. vom Prozessor abhängig).
>=20
> In einer perfekten Programmiersprache hätte ich also einen Typ single=
und=20
> einen Typ double und deren jeweilige Formate wären durch die IEEE-Nor=
m=20
> festgelegt und ich wüßte dann z.B. ganz genau, daß single eben 8 =
Bit für den=20
> Exponenten und 23 Bit für die Mantisse hat und könnte mir damit mei=
ne=20
> MAX_SINGLE Konstante definieren. In PHP habe ich "float" und das würd=
e je=20
> nach System einem der IEEE-Formate (single, double, ..., quad) entsprec=
hen=20
> und ich müßte praktisch nur diese Möglichkeiten austesten, um mei=
n MAX_FLOAT=20
> zu ermitteln?
Korrekt. ich halte es für mehr als unwahrscheinlich, dass der Float-Typ=
durch etwas Eigenes dargestellt wird; es wird ein entsprechender
Datentyp der darunterliegenden Sprache (C) sein. C wiederum verwendet
wenn möglich die vom prozessor zur Verfügung gestellten Typen. Somit
denke ich, dass man sich ruhigen Gewissens auf die durch IEEE
vorgegebenenen Variationen beschränken kann.
MfG
Niels
--=20
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------
Re: Re:
am 02.11.2006 12:01:52 von Thomas Mlynarczyk
Also sprach Niels Braczek:
>> diese Möglichkeiten austesten, um mein MAX_FLOAT zu ermitteln?
> Korrekt.
Dann werde ich das mal versuchen.
Gruß und Dank,
Thomas