Bonjour,
j'ai une valeur: $valeur=2007052200000110
and je fais $valeur+=1; il me donne ce résultat: $valeur=200705220000011e+015
je voudrais avoir excatement $valeur=2007052200000111 savez vous ce qu'il faut faire ?
Merci d'avance
Cathy
Bonjour,
j'ai une valeur: $valeur=2007052200000110
and je fais $valeur+=1; il me donne ce résultat: $valeur=200705220000011e+015
je voudrais avoir excatement $valeur=2007052200000111 savez vous ce qu'il faut faire ?
Merci d'avance
Cathy
Tu mets "use bigint;" au début de ton script.
--
Jedaï
Super !!! Merci beaucoup
Cathy
Bonjour,
Dans mon code j'ajoute maintenant: use threads::shared (voir le code ci dessous) Alors sans 'use bigint' le proc fonctionne, mais j'ai encore le problème de conversion. Avec use bigint , j'ai 'invalid value for shared scalar at ....'
pourrais tu donner ton avis ?
Merci
Cathy
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 use threads; use threads::shared; use bigint; my $a : shared; my $toto; $a=1; $toto=1999999999999999999997; print("$toto\n"); $toto=$toto+1; print("$toto\n"); $thr1 = threads->new(\&sub1,"aaaa"); $thr2 = threads->new(\&sub1,"bbbb"); $thr1->join; $thr2->join; print "$a\n"; sub sub1 { my ($txt1) = @_; $a = $a + 1; print "foo->$a->$txt1\n"; $a = $a + 1; print "foo->$a\n"; }
Avec l'implémentation actuelle de Perl, on ne peut pas partager les objets. Or bigint est précisément un pragma qui transforme les entiers normals en objets BigInt.
Si tu peux, je te conseille de travailler directement avec BigInt, sans partager ces objets. Si tu as vraiment besoin de les partager, peut-être faudrait-il envisager de le faire à la main avec une sérialization, ou en utilisant un module comme Thread::Apartment .
--
Jedaï
on peut utiliser
use Math::BigInt;
my $x = Math::BigInt->new('12345678901234567890');
Cathy
Oui, mais attention on ne peut pas utiliser shared() sur $x.Envoyé par cathou9999
--
Jedaï
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