[linux-support] C++: Multiplikation von "double"

maeder+lubge@glue.ch maeder+lubge at glue.ch
Tue May 27 22:36:37 CEST 2008


miLosh wrote:
>
>> Wenn ich mit -ffloat-store übersetze, erhalte ich:
>>
>> z: 4294836225
>> z1: 18445618199572250624
>> z2: 18445618199572250624
> was aber beides falsch ist - richtig ist z2 im beispiel von markus - zu 
> erkennen an der 5 am ende ;)
> 
> aber ich denk dass auch dass es was mit den typen und dem casten zu tun 
> hat. allerdings wär
> für mich z1 logischer als richtiges resultat, da int 4 byte und double 8 
> byte belegt auf 32bit,
> long double aber 10. da dem nicht so ist, darf weiter geraten werden ;)

Von den 10 Byte gehen 1 Bit fürs Vorzeichen und 15 für den Exponenten weg; 
hier interessiert nur die Mantisse, und die kann mit ihren 64 Bit den Wert 
18445618199572250625 (2^16-1)^4 im Prinzip gerade noch darstellen.

Ich bin eher erstaunt, wie genau z1 rauskommt. Mit 53 Bits Mantisse kann man 
ja eigentlich nur 0 bis 9007199254740991 exakt repräsentieren.

-- 
Thomas



More information about the Linux-support mailing list