[Vienna-pm] noch seltameres...
Peter J. Holzer
hjp-vienna-pm-list at hjp.at
Thu Mar 30 06:57:08 PST 2006
On 2006-03-30 10:25:59 +0200, Nagy Wilhelm wrote:
> Hallo Leute,
>
> erstmal besten dank fuer eure hilfe.
>
> Wer gerne gruebelt...
>
> $sValue = 0.0001;
> $sValue *= 0.75;
> $sValue = sprintf('%f',$sValue);
>
> printf("%.5f\n",$sValue);
> printf("%.5f\n",$sValue+1-1);
> printf("%.5f\n",$sValue*1);
> printf("%.5f\n",$sValue/1);
>
>
> ergibt bei mir folgendes:
> ---------- DoProgram ----------
> 0.00007
> 0.00008
> 0.00007
> 0.00007
>
> Output completed (0 sec consumed) - Normal Termination
>
> Besonder spannend ist
> printf("%.5f\n",$sValue+1-1);
Das ist nicht sonderlich verwunderlich. 0.000075 ist in Binärzahlen
nicht exakt darstellbar (genausowenig, wie z.B. 1/7 in Dezimalzahlen
exakt darstellbar ist). Die nächste als IEEE-754-Double-Precision
Floatingpointzahl darstellbare Zahl ist
7.4999999999999993e-05: + 01111110001 [1.]0011101010010010101000110000010101010011001001100001
(Dezimaldarstellung auf 17 Stellen gerundet). Das wird also bei Rundung
auf 5 Nachkommastellen auf 0.00007 abgerundet.
Das +1 wäre exakt
01111111111 [1.]000000000000010011101010010010101000110000010101010011001001100001
was auf
01111111111 [1.]0000000000000100111010100100101010001100000101010101
aufgerundet wird. Wenn man davon wieder 1 abzieht, ist man bei
01111110001 [1.]0011101010010010101000110000010101010100000000000000
was dezimal ca. 0.00007500000000005 ist. Wenn man das auf 5
Nachkommastellen rundet, kommt natürlich 0.00008 heraus.
Standardregel aus der numerischen Datenverarbeitung: Addition und
Subtraktion sind Böse(TM).
hp
--
_ | Peter J. Holzer | Ich sehe nun ein, dass Computer wenig
|_|_) | Sysadmin WSR | geeignet sind, um sich was zu merken.
| | | hjp at hjp.at |
__/ | http://www.hjp.at/ | -- Holger Lembke in dan-am
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://mail.pm.org/pipermail/vienna-pm/attachments/20060330/4094f75f/attachment.bin
More information about the Vienna-pm
mailing list