IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

Valeur numérique: conversion


Sujet :

Langage Perl

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 75
    Points : 38
    Points
    38
    Par défaut Valeur numérique: conversion
    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

  2. #2
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Tu mets "use bigint;" au début de ton script.

    --
    Jedaï

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 75
    Points : 38
    Points
    38
    Par défaut ça fonctionne
    Super !!! Merci beaucoup

    Cathy

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 75
    Points : 38
    Points
    38
    Par défaut conflit avec
    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";
        }

  5. #5
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    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ï

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 75
    Points : 38
    Points
    38
    Par défaut sinon
    on peut utiliser
    use Math::BigInt;
    my $x = Math::BigInt->new('12345678901234567890');

    Cathy

  7. #7
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par cathou9999
    on peut utiliser
    use Math::BigInt;
    my $x = Math::BigInt->new('12345678901234567890');

    Cathy
    Oui, mais attention on ne peut pas utiliser shared() sur $x.

    --
    Jedaï

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. conversion en valeur numérique
    Par baraa.rosa dans le forum LabVIEW
    Réponses: 3
    Dernier message: 15/06/2015, 10h56
  2. Conversion chaîne de caractère/valeur numérique
    Par julieng31 dans le forum Débuter
    Réponses: 5
    Dernier message: 03/06/2009, 16h15
  3. Conversion d'une valeur numérique
    Par aldama dans le forum Débuter
    Réponses: 3
    Dernier message: 19/02/2008, 20h37
  4. [Delphi 6] EditBox -> valeurs numériques ?
    Par JBrek dans le forum Composants VCL
    Réponses: 9
    Dernier message: 02/12/2002, 13h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo