Sqrt(0) floating point error

Tags:    delphi

Hej

Er der nogen som har et trick til at håndtere situationen:

x=0 og y=Sqrt(x) så det ikke giver en floating point error?

FPE opstår som en del af en ArcCos udregning med extended eller double var; sikkert også andre reals.

ArcCos:=(Pi/2)-arctan(x/sqrt(1-x*x));

Jeg har prøvet den indbyggede i Math og ovenstående. Begge giver FPE når x=1. Men tester jeg for x=1 inden da i en If-sætning er x ikke 1. Men i Watches er x=1.

Mik D



4 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
Tjekker om x er 0 inden du laver udregningen?



Noget ala?
Fold kodeboks ind/udKode 




Hej Jonas

Problemet er at et check på x ikke virker uanset om det er 0 i første eksempel eller |1| i andet.

Mik D



Hej

Ja, sæ'føli'. Smart måde at håndtere et compiler-problem på.

Alt for oplagt men godt gjort.

Mik D



t