Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour,
j'ai un algo où je dois contrôler que les valeurs possibles à l'intérieur d'un champ de base de données sont bien numériques.
Le problème est que pour des réels 2.53E-07 par exemple, la fonction ne marche pas...
Je pensais utiliser IsNumber() en 1er et si le résultat est faux, j'appellerai la fonction Match pour tester uniquement les valeurs possibles des réels.
Mais, je n'arrive pas à utiliser cette fonction pour tester les réels...
Est-ce que l'un de vous aurait une idée de la formule que je dois mettre dans la fonction, sachant qu'un réel peut être codé de différentes manières : 2E4 ; 2.5E38 ; +6.02E3 ; -4.1E-2 ; -7.45E16 ; 7.7E+8 ; 3.2E-38 par exemple.
Merci d'avance pour vos pistes,
Bernard
Dernière modification par toto (11-09-2008 15:42:17)
Hors ligne
bonjour en principe IsNumber fonctionne pour les réels
je pense qu'il faudrait une virgule à la place du point comme séparateur décimal
Hors ligne
A priori, ce que la fonction IsNumber n'apprécie pas c'est la lettre E.
J'essaye avec ce format dans la fonction Match() mais elle ne fonction ne pas avec un + en début de valeur.
==> Match(test, "^[\+\-]?[0-9]\.?[0-9]*E[\+\-]?[0-9]*")
Avec +6.02E3 ça ne fonctionne pas, avec 6.02E3 ça passe.
Je ne comprend pas ce qui ne va pas...
Hors ligne
c'est bien le point qui ne passe pas :
IsNumber( '+6.02E3' ) => False IsNumber( '6.02E3' ) => False IsNumber( '+6,02E3' ) => True IsNumber( '-6,02E3' ) => True
Hors ligne
He bien merci beaucoup !
Hors ligne