Tags
Forum
Artikler
Brugere
Stil spørgsmål
1
online
Login
Husk mig
Sqrt(0) floating point error
Tags:
delphi
Bruger #4912
@ 09.05.08 08:42
25
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
1
Bruger #3275
@ 09.05.08 13:04
1
1.736
Tjekker om x er 0 inden du laver udregningen?
1
Bruger #782
@ 10.05.08 15:31
291
Noget ala?
Kode
try ArcCos:=(Pi/2)-arctan(x/sqrt(1-x*x)); except on e: EInvalidOp do ArcCos := 0; end;
0
Bruger #4912
@ 10.05.08 09:27
25
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
0
Bruger #4912
@ 10.05.08 22:55
25
Hej
Ja, sæ'føli'. Smart måde at håndtere et compiler-problem på.
Alt for oplagt men godt gjort.
Mik D
Karma barometer (30 dage)
Modtaget
Givet
X
Favorit hos
Forum tråde
Artikler
Tilføj til dine favorit tags
Fjern fra dine favorit tags