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

ActionScript 3 Discussion :

Opérations de casting


Sujet :

ActionScript 3

  1. #1
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut Opérations de casting
    Bonjour,

    je ne saisis pas la différence entre le cast comme String(uneVarNumerique) et uneVarNumerique as String ?

    En fait je fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    transactionsPonderees = Number(Number(event.result[1]).toFixed(3));
    // -> marche
     
    transactionsPonderees = Number((event.result[1] as Number).toFixed(3));
    // -> plante
    Qui pourrait m'éclairer là dessus ?

    Merci

  2. #2
    Membre Expert Avatar de Lorenzo77
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1 472
    Détails du profil
    Informations personnelles :
    Âge : 53
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2006
    Messages : 1 472
    Par défaut
    salut,

    1-Force le cast (plus lourd) et plante si la conversion n'est pas autorisé

    2-le "as" permet de renvoyer le type voulu et renvoi null si le cast n'est pas possible

    ---------------
    ceci devrait suffire si c'est un nombre quelconque dans event.result[1]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    event.result[1].toFixed(3);

  3. #3
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Si event.result[1] est une String vide "" alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Number(event.result[1])
    donnera 0 et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Number(event.result[1]).toFixed(3)
    donnera "0.000".

    En revanche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    event.result[1] as Number
    donnera null et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (event.result[1] as Number).toFixed(3)
    plantera.

  4. #4
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    Merci pour ces quelques remarques

    @Lorenzo : je suis quand même obligé de caster avec Number je pense car toFixed() bizarrement je trouve renvoie un String et que mon transactionsPonderees est de type Number

    @seriousme : je suis sur de toujours ramener un nombre à virgule (extrait d'un calcul issu d'une bdd) c'est pourquoi je ne peux jamais tomber dans le cas où

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    (event.result[1] as Number).toFixed(3)
    plantera à priori et c'est pourtant de qu'il fait toujours avec l'opérateur as

  5. #5
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Il y a aussi d'autres cas où la conversion marchera avec l'un et pas l'autre; par exemple si le format n'est pas correct :
    - Number(".1") : 0.1,
    - ".1" as Number : null.

  6. #6
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    J'extraie mon info de cette portion de code php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $statement = $connexion->prepare('SELECT cout_pondere/quantite_totale as achat_pondere FROM
    						(SELECT SUM(quantite) as quantite_totale, SUM(quantite*cours) as cout_pondere FROM historique) as sous_table');
    $statement->execute();
     
    $transactionsPonderees = $statement->fetchObject()->achat_pondere;
    Cela pourrait il être un problème de type de champs en base ? Cours est en decimal(7,3) et quantité en int(10)

  7. #7
    Membre Expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Par défaut
    Cela pourrait il être un problème de type de champs en base ?
    Aucune idée mais que vaut exactement event.result[1] (type et valeur) ?

    A tout hasard, es-tu bien sûr que l'index 1 soit correct ?
    Parce que si ce n'est pas le cas il n'y aura pas d'erreur mais le résultat sera NaN.

  8. #8
    Membre Expert Avatar de Madfrix
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 326
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 326
    Par défaut
    l'index 1 est toujours correct puisque sans l'opérateur as mais avec le cast Number() à la place, j'obtiens le résultat escompté. En gros j'ai réussi à faire ce que je veux, mais je n'arrive pas à comprendre le as...

    Je n'ai pas crée de value object entre php et as3 donc mes données arrivent non typées, peut être cela vient de là je pense

Discussions similaires

  1. opérations sur les dates
    Par coucoucmoi dans le forum Débuter
    Réponses: 2
    Dernier message: 12/08/2003, 11h45
  2. CAST ou autre ?
    Par 74160 dans le forum Requêtes
    Réponses: 2
    Dernier message: 10/07/2003, 15h00
  3. CAST DATETIME ----> SMALLDATETIME
    Par Guizz dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/06/2003, 12h07
  4. opération en XSL
    Par rastapopulos dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 12/03/2003, 22h39
  5. traduction en delphi "reinterpreted cast"
    Par Chupakabra dans le forum Langage
    Réponses: 3
    Dernier message: 13/02/2003, 15h49

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