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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  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)

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