Tomas Hubalek wrote:
Mrknete se do Blocha (cesky jako Java efektivne: 57 zasad softwaroveho experta) na radu cislo 31. U double a float mate vzdycky velky problem, pokud provedete nejaky vypocet nekolikrat za sebou (treba v nejakem cyklu, apod.). To se pak budete divit, co vam vyjde.

Viz slavny priklad, co se stane, kdyz vickrat za sebou vynasobim
1/k cislem (k+1)  a odectu 1. Teoreticky bych mel zase dostat 1/k.
Prakticky treba pro k=5 a ctyricet opakovani dostanete
misto 1/5=0.2 zcela jine cislo, a to 1099325942116.

public class Nepresnost {
public static void main(String[] args) {
    System.out.println(" Ukazka ze neplati  (1/k)*(k+1)-1 = 1/k");
    double[] a = new double[40];
    for(double k = 1;k<=17;k++) {
        a[1] = ((double)1)/((double)k);
        for(int j = 2; j<a.length; j++) {
            a[j] = a[j-1]*(k+1)-1;
        }
System.out.println("k="+k+" a[1]="+a[1]+" a["+(a.length-1)+"]="+a[a.length-1]);
    }
}
}

Makub
--
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Supercomputing Center Brno             Martin Kuba
Institute of Computer Science    email: [EMAIL PROTECTED]
Masaryk University             http://www.ics.muni.cz/~makub/
Botanicka 68a, 60200 Brno, CZ     mobil: +420-603-533775
--------------------------------------------------------------

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

Odpovedet emailem