Quoi, tu ne connais pas PB ? Va falloir parcourir tout le forum alors !

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 05-11-2008 09:29:16

julien  
Membre completement Geek
Date d'inscription: 02-09-2008
Messages: 127
Pépites: 10,665
Banque: 0

[RESOLU] Problème de formatage de LONG

Bonjour à tous,

J'ai un soucis, je dois calculer le modulo d'un nombre, le soucis est que ce nombre est un STRING "0042" et lorsque je le passe en LONG il devient 42.
Y a t il une possibilité de conserver les deux zéro qui disparaissent ?

Cordialement

Dernière modification par julien (05-11-2008 15:34:59)

Hors ligne

 

#2 05-11-2008 09:54:05

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Problème de formatage de LONG

Tu peux le repasser en string avec le formattage adéquat:

Code: pb

Long ll_number
String ls_number

ll_number = 42
ls_number = String( ll_number, '0000' )

Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#3 05-11-2008 09:59:10

julien  
Membre completement Geek
Date d'inscription: 02-09-2008
Messages: 127
Pépites: 10,665
Banque: 0

Re: [RESOLU] Problème de formatage de LONG

En fait, je voudrez faire l'inverse

Code: pb

Long ll_number
String ls_number

ls_number = "0042"


mais lorsque je fais :

Code: pb

ll_number = Long(ls_number)


j'obtiens ll_number = 42 alors que je voudrais ll_number = 0042

sinon, et t il possible de calculer le modulo d'un nombre composé de 29 chiffres ?

Hors ligne

 

#4 05-11-2008 10:14:50

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: [RESOLU] Problème de formatage de LONG

en numérique 0042 = 42...


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#5 05-11-2008 10:26:25

julien  
Membre completement Geek
Date d'inscription: 02-09-2008
Messages: 127
Pépites: 10,665
Banque: 0

Re: [RESOLU] Problème de formatage de LONG

oui je sais bien,
je vais essayer autrement.

Existe t-il une fonction permettant de vérifier si un IBAN est bon ?

Est il possible de calculer le modulo d'un nombre composé de 29 chiffres ?

Hors ligne

 

#6 05-11-2008 10:29:48

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Problème de formatage de LONG

Un petit sous pb donne:

Aide pb 10.5 a écrit:

Decimal or Dec

Signed decimal numbers with up to 18 digits. You can place the decimal point anywhere within the 18 digits—for example, 123.456, 0.000000000000000001 or 12345678901234.5678.
Using literals  To assign a literal value, use any number with a decimal point and no exponent. The plus sign is optional (95 and +95 are the same). For numbers between zero and one, the zero to the left of the decimal point is optional (for example, 0.1 and .1 are the same). For whole numbers, zeros to the right of the decimal point are optional (32.00, 32.0, and 32. are all the same). For example:

12.34    0.005     14.0    -6500     +3.5555

Double

A signed floating-point number with 15 digits of precision and a range from 2.2250738585073E-308 to 1.79769313486231E+308.

Integer or Int

16-bit signed integers, from -32768 to +32767.
Using literals  To assign a literal value, use any whole number (positive, negative, or zero). The leading plus sign is optional (18 and +18 are the same). For example:

1        123       1200       +55       -32

Long

32-bit signed integers, from -2147483648 to +2147483647.
Using literals  Use literals as for integers, but longer numbers are permitted.

LongLong

64-bit signed integers, from -9223372036854775808 to 9223372036854775807.
Using literals  Use literals as for integers, but longer numbers are permitted.

Real

A signed floating-point number with six digits of precision and a range from 3.402822E-38 to 3.402822E+38.
Using literals  To assign a literal value, use a decimal value, followed by E, followed by an integer; no spaces are allowed. The decimal number before the E follows all the conventions specified above for decimal literals. The leading plus sign in the exponent (the integer following the E) is optional (3E5 and 3E+5 are the same). For example:

2E4        2.5E38   +6.02E3    -4.1E-2
-7.45E16   7.7E+8   3.2E-38

Du moment que tu utilises le bon type, ça devrait passer pour la fonction Mod. (A tester cependant)


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#7 05-11-2008 10:31:51

julien  
Membre completement Geek
Date d'inscription: 02-09-2008
Messages: 127
Pépites: 10,665
Banque: 0

Re: [RESOLU] Problème de formatage de LONG

Si tu regardes, meme le LongLong est trop petit !

Hors ligne

 

#8 05-11-2008 10:32:04

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: [RESOLU] Problème de formatage de LONG

julien a écrit:

Existe t-il une fonction permettant de vérifier si un IBAN est bon ?

Calcul Clé RIB


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#9 05-11-2008 10:34:33

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Problème de formatage de LONG

Pour ton IBAN, je n'ai pas de fonction toute faite à te proposer.

Par contre, un petit Match sur ton IBAN converti en string devrait déjà t'aider à vérifier que son formattage est bon.
Ensuite, tu le convertis en type numérique pour faire ton calcul de modulo. Pour les autres règles de constitution d'un IBAN, à toi de trouver ça dans la doc ou sur le Net (wikipedia par exemple ). Tu devrais pouvoir faire une fonction de vérification générique sans trop de problème, en découpant ta chaîne de caractère pour vérifier la validité des codes banque, guichet, etc...

[EDIT]
Grillé par erasorz et pick


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#10 05-11-2008 10:46:07

julien  
Membre completement Geek
Date d'inscription: 02-09-2008
Messages: 127
Pépites: 10,665
Banque: 0

Re: [RESOLU] Problème de formatage de LONG

j'ai deja realisé la fonction le seul soucis est la derniere etape :

par exemple le calcul de :

Code: pb

Mod(long("18205004254886248579215425856"), 97)


là PB ne peut pas le faire car le STRING ne rentre pas dans le LONG

Hors ligne

 

#11 05-11-2008 10:51:15

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2486
Pépites: 85
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Problème de formatage de LONG

Tu as essayé la fonction de Pick? (Pour info, les Double ou Real font des effets kisscool du fait de leur manque de précision)


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#12 05-11-2008 11:08:55

julien  
Membre completement Geek
Date d'inscription: 02-09-2008
Messages: 127
Pépites: 10,665
Banque: 0

Re: [RESOLU] Problème de formatage de LONG

ca me met un chiffre a virgule avec une puissance de 10 a la fin

Hors ligne

 

#13 05-11-2008 11:23:59

Cortex  
Modérateur
Lieu: Arlon
Date d'inscription: 08-02-2008
Messages: 194
Pépites: 6,904
Banque: 2,109,818,425,070

Re: [RESOLU] Problème de formatage de LONG

Moi, je dis qu'il faut simplement que tu implémente une fonction de modulo sur des grands nombres fournis en string. J'avais fait ça pour addition, soustraction, multiplication et division, ça m'avait pris dans les 1/2h - 1h tests compris...

Ca doit pas être sorcier... Non?

Hors ligne

 

#14 05-11-2008 12:30:35

Nyphel  
Membre Power Geek
Lieu: Grenoble
Date d'inscription: 06-05-2008
Messages: 253
Pépites: 12
Banque: 529,705,333,097,693

Re: [RESOLU] Problème de formatage de LONG

J'avais eu le même soucis pour convertir des hexadécimaux (string) en décimaux (long) : si mes hexadécimaux étaient trop grands, ça ne rentrait pas dans des long. On avait aboutit à la même conclusion : utiliser des string représentant mes décimaux.

Hors ligne

 

#15 05-11-2008 12:31:08

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: [RESOLU] Problème de formatage de LONG

Bonjour,

Le calcul du modulo en passant par un type decimal ne pose aucun problème :

Code: PB

decimal ldc_reste, ldc_verif = 18205004254886248579215425856.0
ldc_reste = Mod(ldc_verif, 97)


Je pratique de cette façon pour vérifier la clé RIB.

Hors ligne

 

#16 05-11-2008 15:34:33

julien  
Membre completement Geek
Date d'inscription: 02-09-2008
Messages: 127
Pépites: 10,665
Banque: 0

Re: [RESOLU] Problème de formatage de LONG

j'ai utilisé une autre methode, j'ai decouper le nombre en paquet de quatre et j'ai calculé les modulo de chaque partie

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22