Salut,
Un exception "invalid floating point operation" se déclenche quand je veux calculer une puissance de ce type :
avec x négatif, comment faire?
Code Delphi : Sélectionner tout - Visualiser dans une fenêtre à part power(x, 1 / 3);
Salut,
Un exception "invalid floating point operation" se déclenche quand je veux calculer une puissance de ce type :
avec x négatif, comment faire?
Code Delphi : Sélectionner tout - Visualiser dans une fenêtre à part power(x, 1 / 3);
Utiliser une autre fonction, issue de l'aide embarcadero pour ce problème de nombre négatif en base :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 {** A power function from Jack Lyle. Said to be more powerful than the Pow function that comes with Delphi. } function Power2(Base, Exponent : Double) : Double; { raises the base to the exponent } CONST cTiny = 1e-15; VAR Power : Double; { Value before sign correction } BEGIN Power := 0; { Deal with the near zero special cases } IF (Abs(Base) < cTiny) THEN BEGIN Base := 0.0; END; { IF } IF (Abs(Exponent) < cTiny) THEN BEGIN Exponent := 0.0; END; { IF } { Deal with the exactly zero cases } IF (Base = 0.0) THEN BEGIN Power := 0.0; END; { IF } IF (Exponent = 0.0) THEN BEGIN Power := 1.0; END; { IF } { Cover everything else } IF ((Base < 0) AND (Exponent < 0)) THEN Power := 1/Exp(-Exponent*Ln(-Base)) ELSE IF ((Base < 0) AND (Exponent >= 0)) THEN Power := Exp(Exponent*Ln(-Base)) ELSE IF ((Base > 0) AND (Exponent < 0)) THEN Power := 1/Exp(-Exponent*Ln(Base)) ELSE IF ((Base > 0) AND (Exponent >= 0)) THEN Power := Exp(Exponent*Ln(Base)); { Correct the sign } IF ((Base < 0) AND (Frac(Exponent/2.0) <> 0.0)) THEN Result := -Power ELSE Result := Power; END; { FUNCTION Pow }
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager