/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Mærkelige fejl!
Fra : Jonas Delfs


Dato : 06-06-01 18:50

Hej,

Jeg sidder og roder med et større system i PHP...
Pludseligt var der noget der ikke ville som jeg ville. Jeg lavede lidt
manuel debugging med echo etc. og fandt ud af at det var fordi at 1-1 (et
minus et) gav '1.7763568394003E-15'. Det undrede jeg mig meget over, men
måtte til sidst give op.
Jeg fik så den idé at søge på denne kryptiske streng i Google, og fandt sq
noget: http://lci.upf.tche.br/~12950/calculo/erros.php3 (det er den der
ender med 15)
Kilden kan ses på http://lci.upf.tche.br/~12950/calculo/erros.phps

Det ser ud til at 15 er et error-nummer (til hvad?), men hvad i ******* er
den kryptiske streng lige før?
Jeg kan ikke finde hoved og hale i det - er der andre der kan det?


--
Mvh. Jonas Delfs, http://delfs.dk



 
 
Niels Andersen (06-06-2001)
Kommentar
Fra : Niels Andersen


Dato : 06-06-01 19:04

"Jonas Delfs" <nospam@delfs.dk> wrote in message
news:9flqd4$n6t$1@sunsite.dk...
> fandt ud af at det var fordi at 1-1 (et
> minus et) gav '1.7763568394003E-15'.

ca. 1 minus ca. 1 giver ca. 0.
Derfor kan det godt være at "ca 1" bliver vist som "1", mens "ca 0" bliver
vist præcist.

Prøv at lave en var_dump() på dine to 1-taller, og check om de er heltal
eller kommatal...

Lidt svært at genskabe din fejl, og den side du henviser til kan jeg ikke
lige få noget ud af...


--
Mvh.

Niels Andersen



Jonas Delfs (06-06-2001)
Kommentar
Fra : Jonas Delfs


Dato : 06-06-01 19:19

"Niels Andersen" <niels-usenet@myplace.dk> skrev i en meddelelse
news:WguT6.7208$R84.931626@news010.worldonline.dk...

> > fandt ud af at det var fordi at 1-1 (et
> > minus et) gav '1.7763568394003E-15'.
>
> ca. 1 minus ca. 1 giver ca. 0.
> Derfor kan det godt være at "ca 1" bliver vist som "1", mens "ca 0" bliver
> vist præcist.

Øhh...

> Prøv at lave en var_dump() på dine to 1-taller, og check om de er heltal
> eller kommatal...

Lidt mistroisk prøvede jeg.
Jeg kom så til det resultat at når min variabel skiftede fra værdien 0 til
1, skiftede typen ligeledes fra int til float.

Jeg har nu løst problemet ved at skifte
$min_var--
ud med
$min_var = (int)$min_var-1;

> Lidt svært at genskabe din fejl, og den side du henviser til kan jeg ikke
> lige få noget ud af...

Da jeg har løst problemet er det jo stortset også ligemeget, men det SER nu
altså interessant ud :)

Tak for hjælpen!

--
Mvh. Jonas Delfs, http://delfs.dk



Niels Andersen (06-06-2001)
Kommentar
Fra : Niels Andersen


Dato : 06-06-01 20:07

"Jonas Delfs" <nospam@delfs.dk> wrote in message
news:9fls33$oe$1@sunsite.dk...
> > > fandt ud af at det var fordi at 1-1 (et
> > > minus et) gav '1.7763568394003E-15'.
> > Prøv at lave en var_dump() på dine to 1-taller, og check om de er heltal
> > eller kommatal...
>
> Lidt mistroisk prøvede jeg.
> Jeg kom så til det resultat at når min variabel skiftede fra værdien 0 til
> 1, skiftede typen ligeledes fra int til float.
>
> Jeg har nu løst problemet ved at skifte
> $min_var--
> ud med
> $min_var = (int)$min_var-1;

Dvs. du får problemet sådan her:

$min_var = 1;
$min_var--;

og så er $min_var en float?
Hos mig er det stadig en int...


--
Mvh.

Niels Andersen



Jonas Delfs (06-06-2001)
Kommentar
Fra : Jonas Delfs


Dato : 06-06-01 20:10

"Niels Andersen" <niels-usenet@myplace.dk> skrev i en meddelelse
news:AbvT6.7237$R84.944219@news010.worldonline.dk...

> > Jeg har nu løst problemet ved at skifte
> > $min_var--
> > ud med
> > $min_var = (int)$min_var-1;
>
> Dvs. du får problemet sådan her:
>
> $min_var = 1;
> $min_var--;
>
> og så er $min_var en float?

Ja

> Hos mig er det stadig en int...

Samme her, normalt. Skal ikke kunne sige hvad der gør forskellen.

--
Mvh. Jonas Delfs, http://delfs.dk



Anders Johannsen (06-06-2001)
Kommentar
Fra : Anders Johannsen


Dato : 06-06-01 19:32

In article <9flqd4$n6t$1@sunsite.dk>, "Jonas Delfs" <nospam@delfs.dk>
wrote:

> Jeg lavede lidt manuel debugging med
> echo etc. og fandt ud af at det var fordi at 1-1 (et minus et) gav
> '1.7763568394003E-15'. Det undrede jeg mig meget over, men måtte til
> sidst give op.
> Jeg fik så den idé at søge på denne kryptiske streng i Google...

> Det ser ud til at 15 er et error-nummer (til hvad?), men hvad i *******
> er den kryptiske streng lige før?

15 er ikke noget error-nummer.

Overvej følgende udsagn:

   1.7763568394003E-15 =   1.7763568394003 * 10^-15

/A

Søg
Reklame
Statistik
Spørgsmål : 177557
Tips : 31968
Nyheder : 719565
Indlæg : 6408868
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste